如何从主要父活动以外的活动中启动片段?

时间:2014-11-17 12:04:14

标签: android android-activity android-fragments

我有一个主要活动(活动A),其框架布局显示3个片段,即片段A,片段B和片段C.我有另一个活动,其中有一个按钮。当我点击该按钮时,我希望它打开片段B.如何打开属于另一个活动的片段。我试过以下代码

 android.app.Fragment fragment = new ImageGridFragment();
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction()
                    .replace(R.id.frame_container, fragment).commit();

但这似乎只有在您从主父片段更改片段时才有效。我怎样才能克服这个并展示属于另一个活动的另一个片段?

2 个答案:

答案 0 :(得分:2)

您需要向MainActivity传递一些数据,让它知道它必须打开FragmentB。例如,在secondActivity中使用它

Intent openFragmentBIntent = new Intent(this, MainActivity.class);
openFragmentBIntent.putExtra(OPEN_FRAGMENT_B, SOME_VALUE);
startActivity(openFragmentBIntent);

并在您的MainActivity onCreate中:

if (getIntent().hasExtra(OPEN_FRAGMENT_B)
{
    Fragment fragment = new ImageGridFragment();
    FragmentManager fragmentManager = getFragmentManager();
    fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
}

答案 1 :(得分:-1)

您需要打开活动A并传递参数(例如通过附加功能),以便您能够启动/打开正确的片段。

@Override
protected void onStart()
{
    super.onStart();

    if (getIntent() != null && getIntent().hasExtra("something")) {

    }
}