Fragment Manager 的使用

 

import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener, BlankFragment.CallBack {

    private Button bn1;
    private Button bn2;
    private FrameLayout ft1;
    private FragmentManager manager;
    private FragmentTransaction transaction;
    private BlankFragment fragment1;
    private BlankFragment2 fragment2;
    private Button remove;
    private Button hide;
    private Button show;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate( savedInstanceState );
        setContentView( R.layout.activity_main );
        initFrameLayout();
        initView();

    }

    private void initFrameLayout() {
        //fragmet管理类用来控制fragment的隐藏显示和替换等(获取管理者)
        manager = getSupportFragmentManager();

    }

    private void initView() {
        bn1 = (Button) findViewById( R.id.bn1 );
        bn2 = (Button) findViewById( R.id.bn2 );
        ft1 = (FrameLayout) findViewById( R.id.ft1 );

        bn1.setOnClickListener( this );
        bn2.setOnClickListener( this );

        remove = (Button) findViewById( R.id.remove );
        remove.setOnClickListener( this );
        hide = (Button) findViewById( R.id.hide );
        hide.setOnClickListener( this );
        show = (Button) findViewById( R.id.show );
        show.setOnClickListener( this );
    }

    @Override
    public void onClick(View v) {
//等于生活中的秘书的工作,(管理具体的事物)
        transaction = manager.beginTransaction();
        if (fragment1 != null  ) {
            transaction.hide( fragment1 );


        }if (fragment2 != null){


            transaction.hide( fragment2 );
        }
        switch (v.getId()) {
            case R.id.bn1:
                if (fragment1 == null) {
                    try {
                        fragment1 = BlankFragment.class.newInstance();//使用单利模式创建对象,就是只能创建一次对象,

                        Bundle bundle = new Bundle();
                        bundle.putString( "key","时代峰峻搜地方你说的那份思念就是个" );
                        fragment1.setArguments( bundle );
                        fragment1.setBack( MainActivity.this );
                        transaction.add( R.id.ft1, fragment1 );
                    } catch (InstantiationException e) {
                        e.printStackTrace();
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }

                } else {

                    transaction.show( fragment1 );
                }
                break;
            case R.id.bn2:
                if (fragment2 == null) {
                    try {
                        fragment2 = BlankFragment2.class.newInstance();//使用单利模式创建对象,就是只能创建一次对象,
                        transaction.add( R.id.ft1, fragment2 );
                    } catch (InstantiationException e) {
                        e.printStackTrace();
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    }
                } else {

                    transaction.show( fragment2 );
                }
                break;
            case R.id.remove:

                transaction.remove( fragment1 );
                break;
            case R.id.hide:

                transaction.hide( fragment1 );
            case R.id.show:

        transaction.show(  fragment1);
                break;
        }
        transaction.commit();
    }

    @Override
    public void setData(String s) {
        Toast.makeText( this, s, Toast.LENGTH_SHORT ).show();
    }
}




 
package com.example.framel;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;


/**
 * A simple {@link Fragment} subclass.
 */
public class BlankFragment extends Fragment {
        private CallBack back;

    private View inflate;
    private Button bn;

    public void setBack(CallBack back) {
        this.back = back;
    }

    public BlankFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        Bundle bundle = getArguments();
        String key = bundle.getString( "key" );
        Toast.makeText( getContext(), ""+key, Toast.LENGTH_SHORT ).show();
        inflate = inflater.inflate( R.layout.fragment_blank, container, false );
        bn = inflate.findViewById( R.id.bnf );
        bn.setOnClickListener( new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                back.setData( "接收到了" );
            }
        } );
        return inflate;
    }
interface CallBack{
      void   setData(String s);
}
}


package com.example.framel;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;


/**
 * A simple {@link Fragment} subclass.
 */
public class BlankFragment2 extends Fragment {


    public BlankFragment2() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        return inflater.inflate( R.layout.fragment_blank_fragment2, container, false );
    }

}


猜你喜欢

转载自blog.csdn.net/qq_42120002/article/details/80272221