我的应用程序中的主要片段活动具有以下功能
private final void insertFragmentIntoView(final SherlockFragment fragment,
String tag) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.fragment_content, fragment, tag);
ft.commit();
}
R.id.fragment_content
是一个框架布局,我基本上在这个框架中插入一个新的片段。现在我插入的框架有一个按钮,可以将我带到一个新的屏幕。我想要的是我的应用程序中的所有navaigation都应该在我的FragmentActivity中进行。如何通过子片段调用FragmentActivity?
亲切的问候
答案 0 :(得分:0)
在片段中创建一个监听器类,您的父活动将实现该监听器。 现在在您的片段和调用方法中注册侦听器,您可以在其中执行某些操作。 您可以在此处看到此链接http://developer.android.com/training/basics/fragments/communicating.html
片段和活动如何沟通的示例。
class MyFragment extends Fragment{
class interface MyFragmentListener {
doSomeAction();
}
MyFragmentListener myListener;
onAttach(){
myListener=(MainActivity )getActivity();
}
onButtonClick(){
myListener.doSomeAction();
}
}
class MainActivity extends FragmentActivity implements MyFragment.MyFragmentListener
{
doSomeAction(){
//TODO perform some action from your fragment to activity
}
}
答案 1 :(得分:-1)
使用侦听器是Fragment与您的活动之间进行通信的推荐方式。
有关信息,请参阅此Android documentation section。简而言之,它们只是通过Activity类实现一个侦听器接口,并将一个片段中的getActivity()结果转换为一个侦听器。
根据我的个人经验,这非常方便,因为您可以:
Easilly切换基础活动(例如,您在包装器活动中托管整个片段以实现3.0之前的兼容性,并将此片段与11+中的其他片段一起托管) 如果包装器活动支持回调,则可以轻松控制。只需检查它是否实现了侦听器,如果没有,则执行特定于应用程序的操作。