Fragment跳转之Fragment与Activity通信

<span style="font-family:Courier New;font-size:10px;">为了解耦,统一让activity去管理fragment间的跳转,fragment只需要提供回调的接口即可</span>
<span style="font-family:Courier New;font-size:10px;">FragmentOne的页面,让其与activity进行绑定</span>
<span style="font-family:Courier New;font-size:10px;">public class FragmentOne extends Fragment implements View.OnClickListener {

    private Button mBtn1;
    private FragmentOneBtnListener mFragmentOneBtnListener;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,
                             @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_one,null);
        mBtn1 = (Button) view.findViewById(R.id.btn1);
        mBtn1.setOnClickListener(this);
        return view;
    }

    @Override
    public void onClick(View v) {
        if (getActivity() instanceof FragmentOneBtnListener) {
           ((FragmentOneBtnListener) getActivity()).FragmentOneBtn();
        }
    }

    public interface FragmentOneBtnListener{
        void FragmentOneBtn();
    }
}</span>
<span style="font-family:Courier New;font-size:10px;"></span>
</pre><pre name="code" class="java"><pre style="background-color: rgb(199, 237, 204);"><pre name="code" class="java">FragmentTwo页面
public class FragmentTwo extends Fragment implements View.OnClickListener {
    private Button mBtn2;
    private FragmentTwoBtnListener mFragmentTwoBtnListener;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,
                             @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_two,null);

        mBtn2 = (Button) view.findViewById(R.id.btn2);
        mBtn2.setOnClickListener(this);
        return view;
    }

    @Override
    public void onClick(View v) {
        if (getActivity() instanceof FragmentTwoBtnListener) {
            mFragmentTwoBtnListener.FragmentTwoBtn();
        }
    }

    public interface FragmentTwoBtnListener {
        void FragmentTwoBtn();
    }

    public void setFragmentTwoBtnListener(FragmentTwoBtnListener listener) {
        mFragmentTwoBtnListener = listener;
    }
}
FragmentThree页面
public class FragmentThree extends Fragment{


    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater,
                             @Nullable ViewGroup container,
                             @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_three,null);

        return view;
    }


}
MainActivity页面

public class MainActivity extends AppCompatActivity implements FragmentOne.FragmentOneBtnListener,FragmentTwo.FragmentTwoBtnListener{

    FragmentOne mFragmentOne;
    FragmentTwo mFragmentTwo;
    FragmentThree mFragmentThree;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.activity_main);
	//添加第一个页面
	if (savedInstanceState == null) {
	    mFragmentOne = new FragmentOne();
	    getSupportFragmentManager().beginTransaction().add(R.id.id_content,mFragmentOne).commit();
	}
    }


    @Override
    public void FragmentOneBtn() {
	if (mFragmentTwo == null) {
	    mFragmentTwo = new FragmentTwo();
	    mFragmentTwo.setFragmentTwoBtnListener(this);
	}
	FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
	fragmentTransaction.hide(mFragmentOne);
	fragmentTransaction.add(R.id.id_content,mFragmentTwo);
	fragmentTransaction.addToBackStack(null);
	fragmentTransaction.commit();

    }

    @Override
    public void FragmentTwoBtn() {
	if (mFragmentThree == null) {
	    mFragmentThree = new FragmentThree();
	}
	FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
	fragmentTransaction.hide(mFragmentTwo);
	fragmentTransaction.add(R.id.id_content,mFragmentThree);
	fragmentTransaction.addToBackStack(null);
	fragmentTransaction.commit();
    }
}




 

                
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值