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

來源:互聯網
上載者:User

標籤:

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.