2012-03-30 3 views
2

TabActivityをFragmentActivityに変換しました。タブのコンテンツはFragmentsです。私は2つの問題を実行しています:Android FragmentActivityとタブに関する問題

  1. 各タブにはEditTextが含まれています。 TAB1のEditTextの値を変更してTAB2に切り替えた後、TAB1に戻すと、EditTextの値がリセットされました。

  2. 自分のタブのフラグメントの1つから新しいアクティビティを開始してから、既存のFragmentActivityに戻ると、タブのコンテンツが消えます。 #1を、私はフラグメントにすべてを変換するための時間を費やした理由ですTabHost、...

を使用しているとき、私はもともと、この問題を抱えていた、私は問題がsavedInstanceStateに関係していると仮定しています。私は私のFragmentActivityの)(のonCreateで次のように使用して、正確にGoogleのexampleを追っ:

initialiseTabHost(savedInstanceState); 
if (savedInstanceState != null) { 
    mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab")); 
} 

さらに、ここに私のFragmentActivityの私のonSaveInstanceState()メソッドされています

protected void onSaveInstanceState(Bundle outState) { 
    outState.putString("tab", mTabHost.getCurrentTabTag()); 
    super.onSaveInstanceState(outState); 
} 

ここでは私の何ひとつですタブのフラグメントの外観は次のようになります。

public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    if (container == null) { 
     return null; 
    } 

    return (LinearLayout) inflater.inflate(R.layout.priority_boxes_tab, 
      container, false); 
} 

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    setRetainInstance(true); 

    ArrayList<Supply> list = new ArrayList<Supply>(); 

    // More code here 

} 

私は何か他のことをしていますか?私は画面上に約15のEditTextフィールドを持っています。どういうわけかそれらの値をすべて保存して、次回にそれらの値をフィールドに再投入するように設定する必要がありますか?

#2については、他に何ができるのかわかりません。誰にも何か提案はありますか?

ありがとうございます!

答えて

2

私は最初の問題にのみ答えることができます。はい、復元するには、各編集テキストの内容を手動で保存する必要があります。アプリケーション実行中に保持する必要がない場合は、onSaveInstanceStateにバンドルに保存し、onCreateおよび/またはonRestoreInstanceStateに復元します。値を永続化する必要がある場合は、SharedPreferencesを使用するか、別のファイルまたはデータベースに書き込んでください。おそらく、環境設定が最も簡単です。

+0

私はこれを試してみます、ありがとう。各タブの値を記憶しているTabHostを使用する方が簡単でしたが、現在は非推奨になっていますので、使用する意味がなくなりました。幸運にも、各タブには静的な数のEditTextフィールドがあります。しかし、これは動的なEditTextフィールド数では難しくなります... – littleK

関連する問題