我有一个主要活动(活动1),它膨胀了一个导航抽屉(与列表视图列表项目)。抽屉由一个片段(MenuFragment)运行,这样我就可以根据选择哪个项目来膨胀任何xml布局。现在我的问题是如何在用户从抽屉中选择一个项目时运行另一个活动(活动2),因为抽屉由MenuFragment运行,我可以从片段开始活动。任何帮助真的很感激。提前致谢。如何运行从另一个片段的片段
0
A
回答
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。
1
你不应该从另一个片段调用片段。 Communication between fragments应该通过活动。
看看这个其他的SO thread。希望这可以帮助。
相关问题
- 1. 如何从Android的另一个片段调用一个片段?
- 2. 从另一个片段调用片段
- 3. 从另一个片段打开片段
- 4. 从片段到另一个片段
- 5. 如何从另一个片段更新片段的ListView?
- 6. Android - 从一个片段添加日期到另一个运行片段
- 7. ViewPager中另一个片段的片段
- 8. 如何从片段开始另一个片段
- 9. 如何实现意图从另一个片段调用片段
- 10. 如何从片段移动到另一个片段
- 11. Android - 如何将一个片段放在另一个片段上
- 12. 去另一个片段,而在片段
- 13. 打开片段在另一个片段
- 14. 另一个片段
- 15. 从一个片段发送值到另一个片段
- 16. 将数据从一个片段发送到另一个片段
- 17. 从片段切换到另一个片段如果片段尚未打开
- 18. 如何从另一片段的onTouch()内部替换片段?
- 19. FragmentTabHost将片段从片段传递到另一片段
- 20. 如何从一个片段发送数据到另一个片段中的Android?
- 21. 如何从另一个片段内的RecyclerView适配器启动一个片段?
- 22. 如何从一个片段通过选择的图像到另一个片段
- 23. 我如何打开另一个片段的新片段
- 24. 更换片段与另一片段显示两个片段
- 25. 如何将数据从一个片段传输到另一个片段android
- 26. 如何将值从一个片段传递到另一个片段
- 27. 如何将JSONArray从一个片段传递到另一个片段
- 28. 如何将值从一个片段转移到另一个片段
- 29. 如何从一个片段获取包数据到另一个片段?
- 30. 将另一个片段放入另一个片段