我有一个使用滑动菜单作为导航方式的应用程序。我有三个主要片段,我想使用导航菜单进行切换。目前我有一个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。
希望这有助于!