簡體   English   中英

如何在片段之間導航?

[英]How to navigate between fragments?

我是Android Fragments的新手。 我有2個不同的片段,並希望使用按鈕從一個片段導航到另一個片段。 例如,在fragmentA中,當我按下一個按鈕時,我轉到fragmentB並進行了比較。

這是我的簡單代碼:

FragmentA.java

public class FragmentA extends Fragment {

    public FragmentA(){}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_a, container, false);

        return rootView;
    }

}

fragmenta.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="670dp"
    android:gravity="top"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/txtLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="15dp"
        android:text="Fragment 1"
        android:textStyle="bold"
        android:textSize="22dp" />
</LinearLayout>

FragmentB.java

public class FragmentB extends Fragment {

    public FragmentB(){}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_b, container, false);

        return rootView;
    }

}

fragment.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="670dp"
    android:gravity="top"
    android:orientation="vertical" >


    <TextView
        android:id="@+id/txtLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="15dp"
        android:text="Fragment 2"
        android:textStyle="bold"
        android:textSize="22dp" />
</LinearLayout>

我需要按鈕的代碼(java和xml)。 從頭開始的幫助將不勝感激。 提前致謝!!

查看本教程和下面的代碼以獲得參考

Fragment1.java

    public class Fragment1 extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment1, container, false);
    }

    public void onClick(View view) {
        Fragment2 fragment2 = new Fragment2();
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.fragment1, fragment2);
        fragmentTransaction.commit();
    }

    }

Fragment2.java

public class Fragment2 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment2, container, false);  
        }
}

活動中的代碼

 public class MyActivity extends FragmentActivity implements OnListenerChangeFragment {

        FragmentA mFragmentA;
        FragmentB mFragmentB;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState); 

            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            // transaction.replace(R.id.fragment_container, newFragment);
            transaction.addToBackStack(null);
            transaction.commit();
        }

        @Override
        public void onShowFragmenA() {
             //replace mFragmentB by mFragmentA

        }

        @Override
        public void onShowFragmenB() {
             //replace mFragmentA by mFragmentA
        }
}  

//片段代碼

public class FragmentA extends Fragment {

        private OnListenerChangeFragment mCallback;

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

                Button mButton = new Button(getActivity());

                mButton.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                                mCallback.onShowFragmenB();
                        }
                });


                return mButton;
        }

        @Override
        public void onAttach(Activity activity) {
                super.onAttach(activity);

                try {
                        mCallback = (OnListenerChangeFragment) activity;
                } catch (ClassCastException e) {
                        throw new ClassCastException(activity.toString()+ " must implement OnListenerChangeFragment");
                }
        }
}

public class FragmentB extends Fragment {

        private OnListenerChangeFragment mCallback;


        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,  Bundle savedInstanceState) {

                Button mButton = new Button(getActivity());

                mButton.setOnClickListener(new OnClickListener() {

                        @Override
                        public void onClick(View v) {
                                mCallback.onShowFragmenA();
                        }
                });

                return mButton;
        }


        @Override
        public void onAttach(Activity activity) {
                super.onAttach(activity);

                try {
                        mCallback = (OnListenerChangeFragment) activity;
                } catch (ClassCastException e) {
                        throw new ClassCastException(activity.toString()+ " must implement OnListenerChangeFragment");
                }
        }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM