2017-06-27 4 views
0

最初はアクティビティAを持っていますので、ここでフラグメントを1つ開くつもりです それを破棄してアプリケーションを起動すると、同じアクティビティでそのフラグメントがリストアされます利便性に答える同じ位置セーブ・フラグメント・トランザクションがありません

の場合は、ここに私のフラグメントトランザクションコードです:

Fragment newFragment = new ece_frag(); 
    FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
    transaction.setCustomAnimations(R.anim.fade_in,R.anim.fade_out); 
    transaction.replace(R.id.frame_layout, newFragment); 
    transaction.commit(); 
+0

これをオンにしてください。したがって、アクティビティが作成されるたびに、このフラグメントが追加されます。 –

+0

実際にボタンをクリックしたときにこのフラグメントを適用したい –

+0

それに共通のプリフレースを使用すると、すべてのフラグメントをインデックス化してインデックスを保存できます。次に、onCreateで最後のフラグメントが何であるかを確認し、ロードします。 –

答えて

1

が、これは0-を言うように、私は、各フラグメントにインデックスを与えるあなたは3つの断片A、BおよびCの

を考えてみましょう> A、1-> B、2-> C。私はこれを行うときに、私はまた、以下のコードのようにインデックスを保存します。

Fragment newFragment = new A(); 
FragmentTransaction transaction = 
getFragmentManager().beginTransaction(); 
transaction.setCustomAnimations(R.anim.fade_in,R.anim.fade_out); 
transaction.replace(R.id.frame_layout, newFragment); 
transaction.commit(); 
SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
SharedPreferences.Editor editor = sharedPref.edit(); 
editor.putInt("last_fragment", 0);//For fragment A saving index 0 
editor.commit(); 

そしてのonCreateであなたは、このような場合はケースを使用することができます。

SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE); 
//0 here is the default value 
int lastFragment = sharedPref.getInt("last_fragment", 0); 

次にあなたがこの

を行うことができます
switch(lastFragment){ 
    case 0: 
    //Load your fragment Here according to the index. 
    break; 
    case 1: 
    //Load your fragment Here according to the index. 
    break; 
    case 2: 
    //Load your fragment Here according to the index. 
    break; 

} 

希望すると便利です。

+0

のケース0私は質問 –

+0

で質問したフラグメントトランザクションに以前のコードを使用しましたが、その方法では機能しません –

+0

深刻なことに、私はこの回答を2日後に受けました... –

関連する問題