2013-07-24 106 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

希望這有助於!