2014-09-30 89 views
0

我有一個主要活動(活動1),它膨脹了一個導航抽屜(與列表視圖列表項目)。抽屜由一個片段(MenuFragment)運行,這樣我就可以根據選擇哪個項目來膨脹任何xml佈局。現在我的問題是如何在用戶從抽屜中選擇一個項目時運行另一個活動(活動2),因爲抽屜由MenuFragment運行,我可以從片段開始活動。任何幫助真的很感激。提前致謝。如何運行從另一個片段的片段

回答

0

這種類型的問題的一種常見模式是爲每個片段提供一個偵聽器接口,其中當發生片段內的某些事情時需要通知Activity。

所以,你的菜單片段可能看起來是這樣的:

public class MenuFragment extends Fragment 
{ 
    public interface Listener 
    { 
     void onDrawerItemSelected(); 
    } 

    private Listener listener; 

    public void setListener(Listener listener) 
    { 
     this.listener = listener; 
    } 

    // When drawer item selected, do something like 
    // 
    // if (listener != null) 
    // { 
    // listener.onDrawerItemSelected(); 
    // } 
} 

您的活動會看起來像:

public class TestActivity extends Activity implements MenuFragment.Listener 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     // MenuFragment fragment = ...; 
     // fragment.setListener(this); 
    } 

    @Override 
    public void onDestroy() 
    { 
     // MenuFragment fragment = ...; 
     // fragment.setListener(null); 
     super.onDestroy(); 
    } 

    @Override 
    public void onDrawerItemSelected() 
    { 
     // TODO launch other activity here 
    } 
} 

從本質上說,讓你的活動帶動展會。

0

使用接口

Communicating between a fragment and an activity - best practices.

您需要從片段創建到活動的接口。喜歡的東西:

public class MainActivity extends FragmentActivity implements MainFragment.getCommunication { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

//called from the MainFragment 
@Override 
public void TalkToMe() { 

    MainFragment MainFrag = (MainFragment)getFragmentManager().findFragmentById(R.id.fragment_main); 
    MainFrag.MyMainFragmentMethod(); 

    OtherFragment OtherFrag = (OtherFragment)getFragmentManager().findFragmentById(R.id.fragment_Other); 
    OtherFrag.MyMainFragmentMethod(); 



} 

} 

片段類

public class MainFragment extends Fragment { 

//interface to the MainActivity activity class 
    private getFragmentCommunication listener; 

    public interface getCommunication { 
     public void TalkToMe(); 

    } 

} 

這裏是一個很好的文章:http://www.vogella.com/articles/AndroidFragments/article.html

相關問題