Android从Fragments中导航到父Fragment Activity

时间:2013-04-10 07:11:25

标签: android

我的应用程序中的主要片段活动具有以下功能

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?

亲切的问候

2 个答案:

答案 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+中的其他片段一起托管) 如果包装器活动支持回调,则可以轻松控制。只需检查它是否实现了侦听器,如果没有,则执行特定于应用程序的操作。