6

Frag_A、Frag_Bという3つのフラグメントがあります。& Frag_Cです。フラグメントをポップ&再度同じフラグメントに置換すると空白のページが表示されます

ナビゲーションロジック:Frag_A ==> Frag_B ==> Frag_C。 Frag_Aはレイアウトに最初に追加されるので、最初にFrag_Aが画面に表示され、ユーザーが次のボタンを押すとFrag_AがFrag_Bに置き換えられ、Frag_Bが画面に表示されます。 Frag_BはFrag_Cに置き換えられ、Frag_Cが画面に表示されます。

この時点ですべてのコードが正常に動作します。

次のフラグメントに変更するための方法:活性

//here, argument 'fragment' is either Frag_B or Frag_C 
public void showFragment(Fragment fragment){ 
    FragmentManager fragMgr = activity.getSupportFragmentManager(); 
    FragmentTransaction fragTrans = fragMgr.beginTransaction(); 

    fragTrans.replace(R.id.frag_placeholder, fragment, fragmentName); 
    fragTrans.addToBackStack(null); 

    int transId = fragTrans.commit(); 
    fragMgr.executePendingTransactions(); 

} 

レイアウトファイル(活動が開始したときFrag_Aがfrag_placeholderに添加される):

<?xml version="1.0" encoding="utf-8"?> 
<merge xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" 
    > 

    <FrameLayout 
     android:id="@+id/frag_placeholder" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     /> 
</merge> 

しかし、Frag_Cが示された後、もしI pop Frag_C物理的な戻るボタンを押してshowFragment(Frag_C)メソッドを呼び出すと、コードが物理的なボタンが押されたことが検出された直後にFrag_Cを再度表示する、画面に空白のページが表示されます。なぜ&それを修正するには?

================私が言った=====================

を説明上記の「*私のコードは、物理的なボタンが*押されて検出され、再び右後Frag_Cを表示」、ここで私が何を意味するかである:@ Luksprogのコメントに基づいて

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    //I detect the Physical Back button is pressed & invoke the method to show the popped Frag_C again. 
} 
+0

*物理的なボタンが押された直後にコードが検出された直後* *正確にはどういう意味ですか? – Luksprog

+0

OP – Mellon

+0

で私の説明を確認してください。野生の推測...フラグメントの同じインスタンスで 'showFragment()'メソッドを使用しますか?また、少し奇妙に見えますが、ユーザーはフラグメントを削除して再度表示することができます。 – Luksprog

答えて

1

、私が見つけた:活動の

もし私が新しいインスタンスFrag_Cのように作成するのであれば、常にsa私の場合、空白のページの問題は修正されます。

+0

しかし、新しいインスタンスを作成すると、より多くのメモリを取る。 – Arslan

+0

私は同じ問題に遭遇しました。明らかに、今は2017年10月まで修正されておらず、毎回新しいフラグメントを作成したくありません。もっと詳しく調べてみましょう。情報があれば分かち合ってください – LPVOID

関連する問題