2014-09-30 62 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

相关问题