Android -------- 從一個Fragment跳轉到另一個Fragment


一、直接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();
                  }
              });
          }
      }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM