我有一個使用滑動菜單作爲導航方式的應用程序。我有三個主要片段,我想使用導航菜單進行切換。目前我有一個MainActivity應該循環這三個片段。問題在於,在三個主要片段中的每一個片段中,我都有一些按鈕,單擊它們時應該啓動另一個片段,並將主片段放在堆棧上以返回它。在一個活動中處理多個片段
我如何管理此導航,以便我能夠使用一個主要活動交換3個主要片段,並且還處理每個主要片段上的子片段?
希望這已經夠清楚了!
我有一個使用滑動菜單作爲導航方式的應用程序。我有三個主要片段,我想使用導航菜單進行切換。目前我有一個MainActivity應該循環這三個片段。問題在於,在三個主要片段中的每一個片段中,我都有一些按鈕,單擊它們時應該啓動另一個片段,並將主片段放在堆棧上以返回它。在一個活動中處理多個片段
我如何管理此導航,以便我能夠使用一個主要活動交換3個主要片段,並且還處理每個主要片段上的子片段?
希望這已經夠清楚了!
你必須在你的活動中使用容器。您可以替換Fragment whit FragmentManager。
例如佈局活動:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentContainer"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
而且你的活動:
public abstract class SingleFragmentActivity extends Activity {
protected abstract Fragment replaceContentFragment();
protected int getLayoutActivity() {
return R.layout.single_fragment_activity;
}
@Override
public void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
this.setContentView(this.getLayoutActivity());
this.addFragment();
}
private void addFragment() {
FragmentManager fragmentManager = this.getFragmentManager();
Fragment fragment = fragmentManager
.findFragmentById(R.id.fragmentContainer);
if (fragment == null) {
fragment = this.replaceContentFragment();
fragmentManager.beginTransaction()
.add(R.id.fragmentContainer, fragment).commit();
}
}
}
你可以讓你的活動從SingleFragmentActivity繼承和重寫replaceContentFragment方法。
你有兩個選擇:
Interfaces
Otto
對於第一種選擇,可以創建Interface on the
Fragment`側是這樣的:
public Temp foo;
public interface Temp
{
public void tempSelected(int i);
}
然後在你的MainActivity
,你與該方法是這樣的延長片段:
public class MyMainActivity extends MyFragment.Temp
這會要你重寫臨時提供的方法。
第二個選項是使用Otto與Subscribe和Produce方法。最好的解釋是here。
希望這有助於!