一、直接getActivity,使用activity的fragmenttransation的replace方法替換
private void changeToAnotherFragment(){
//如果是用的v4的包,則用getActivity().getSuppoutFragmentManager();
FragmentManager fm = getActivity().getFragmentManager();
//注意v4包的配套使用
Fragment fragment = new 目標fragment();
fm.beginTransaction().replace(容器控件id,fragment).commit();
}
二、定義回調函數(推薦)
- 實現步驟
定義回調,並利用回調結果實現功能
1、定義接口,並聲明其包含的方法,
2、定義接口成員變量,
3、定義接口成員變量的get和set方法,主要是set方法,給成員變量賦值,
4、調用,判斷如果成員變量不為空(null),則調用接口中的方法。
實現回調
1、實例化包含回調接口的類,即定義類對象
2、對象調用set方法,將接口回傳
3、實現接口中的方法,注意:該實現只在此處起作用。
三、舉例
-
定義包含有接口的類
class OneFragment extends Fragment{ private Button btn; private OnButtonClick onButtonClick;//2、定義接口成員變量 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag_one, null); btn = (Button)view.findViewById(R.id.button); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //4、如果接口成員變量不為空null,則調用接口變量的方法。 if(onButtonClick!=null){ onButtonClick.onClick(btn); } } }); return super.onCreateView(inflater, container, savedInstanceState); } //定義接口變量的get方法 public OnButtonClick getOnButtonClick() { return onButtonClick; } //定義接口變量的set方法 public void setOnButtonClick(OnButtonClick onButtonClick) { this.onButtonClick = onButtonClick; } //1、定義接口 public interface OnButtonClick{ public void onClick(View view); } }
-
這樣只要在acitivty中設置回調即可
public class MainActivity extends Activity { //1、實例化類對象 private OneFragment oneFragment = new OneFragment(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //。。。 //。。。省略代碼 //2、調用對象的set方法,回傳接口對象 oneFragment.setOnButtonClick(new OnButtonClick() { //3、實現接口對象的方法, @Override public void onClick(View view) { //切換到TwoFragment fm.beginTransaction() //替換為TwoFragment .replace(R.layout.fragment_container,new TwoFragment()) .commit(); } }); } }