2013-07-24 61 views
0

我有一个使用滑动菜单作为导航方式的应用程序。我有三个主要片段,我想使用导航菜单进行切换。目前我有一个MainActivity应该循环这三个片段。问题在于,在三个主要片段中的每一个片段中,我都有一些按钮,单击它们时应该启动另一个片段,并将主片段放在堆栈上以返回它。在一个活动中处理多个片段

我如何管理此导航,以便我能够使用一个主要活动交换3个主要片段,并且还处理每个主要片段上的子片段?

希望这已经够清楚了!

回答

0

你必须在你的活动中使用容器。您可以替换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方法。

0

你有两个选择:

  • 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

希望这有助于!