在同一活动中打开片段

时间:2018-06-15 07:38:16

标签: android android-fragments android-activity fragment

我有2个活动(ActivityMainActivityCost)和1个片段,用于扩展在FragmentFormula中打开的片段(ActivityMain)。

如何从ActivityCost中打开FragmentFormula

我希望ActivityMain已打开并显示FragmentFormula。 我使用此代码但无法正常工作



    Intent intent = new Intent(G.context, ActivityMain.class);
    G.context.startActivity(intent);
    overridePendingTransition(R.anim.fade_in,R.anim.fade_out);
    ActivityMain.relative_content.setVisibility(View.VISIBLE);
                    
    FragmentFormula fragmentFormula = new FragmentFormula();
    android.support.v4.app.FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.add(R.id.frameLayout_main_Content,fragmentFormula);
transaction.commit();




1 个答案:

答案 0 :(得分:0)

我不明白你想要实现的目标。

在这里,您将启动ActivityMain ,然后设置片段,这将无效,因为您现在已经在ActivityMain中,而不再在ActivityCost中。也许您需要做的是在ActivityMain的onActivityCreated中添加片段,而不是在启动ActivityMain后从ActivityCost添加片段。

如果您不希望它是ActivityMain的默认行为,您可以在intent中传递Extra,然后检查它是否存在于ActivityMain中。

<强> ActivityCost

Intent intent = new Intent(G.context, ActivityMain.class);
intent.putExtra("startFragmentFormula", true);
G.context.startActivity(intent);
overridePendingTransition(R.anim.fade_in,R.anim.fade_out);
ActivityMain.relative_content.setVisibility(View.VISIBLE);

<强> ActivityMain

public void onActivityCreated(Bundle savedInstanceState) {
    Intent intent = getIntent();
    boolean startFragmentFormula = intent.getExtras().getBoolean("startFragmentFormula");

    if (startFragmentFormula) {
        FragmentFormula fragmentFormula = new FragmentFormula();
        android.support.v4.app.FragmentTransaction transaction = 
        getSupportFragmentManager().beginTransaction();
        transaction.add(R.id.frameLayout_main_Content, fragmentFormula);
        transaction.commit();
    }
    else {
        // default behavior
    }
}