2017-09-29 8 views
0

たとえば、フラグメントの現在のUIを保存する方法について少し混乱します。たとえば、別のアプリケーションに移動してアプリケーションに戻ってきます。私は、ボタンをクリックしたときにビューを動的に追加することができるフラグメントと、ユーザーに応じてアクティブであるかどうかを示すタイマーを持っています。動的に追加されたビューは、ユーザーによっても削除される場合もあれば、削除されない場合もあります。基本的には、現在画面に表示されているすべてのビュー、カウントダウンタイマー、およびアプリの外をナビゲートするたびに現在の時刻を保存したいと考えています。これはonStop()が呼び出されたと仮定しています。これをどうやってやりますか?保存プロセスやデータの復元方法について少し混乱しています。フラグメントダイナミックuiリストアonStop()

答えて

0

保存する必要がある項目によって異なります。

あなたの質問は少し曖昧ですが、データを保存する方法はたくさんあります。 最初に覚えておくべきことは、しかし、あなたが戻ったときにUIが見えて、それがまだ見える方法になるということです。あなたが戻ってあなたのUIを失っている場合は、おそらく何か間違っている。

アプリが破棄された後にリターンする場合、またはUIを保持しないように履歴フラグが設定されていない場合やガベージコレクションがメモリスペースを取り戻してアプリを抹消した場合は、onPauseとonStopをonDestroy。あなたのを保存することもできます

あなたがSecureSharedPrefにデータを保存することを選択する(カスタムファイル、暗号化しますが、ファイルシステムから隠されていない)ことがあり (そうでない場合はセキュア)sharedPrefでデータを保存することもできます SQLiteデータベースのデータは、SQLOpenHelperの実装が必要です。 それとも、あなたがキーが存在するかどうかを確認する必要がありますので、あなたはこれがのonCreateの束に復元され

@Override 
public void onSaveInstanceState(Bundle outState) { 
    outState.putString(MY_KEY, mMyvalue); 

    // call superclass to save any view hierarchy 
    super.onSaveInstanceState(outState); 
} 

のようなのonCreateに復元するために、バンドルに保存使用することはまだ生きている間、あなたは、アプリに戻っている場合次のonCreateコールで返されたバンドルに格納されます。ただし、これは破棄されたセッション間では維持されません。これは、アプリがメモリから消去されていない限り持続します。また、これを使用するには、シリアライズ可能なparcableオブジェクトを使用する必要があります。あなたがしなければならないのはそれを実装することだけです。

+0

私が動的に追加するビューには、テキスト/数値を入力として受け取るedittextが含まれています。だから私はこれらのテキスト/数字を保存する必要があります。しかし、ユーザーはボタンを押すことでこれらの数字を減らすか、タイマーを開始することができます(タイマーは編集テキストのintとして表示されます)。ユーザーがx個のビューを膨張させると、保存する必要があります。作成されたすべてのビューがsqliteデータベースに保存されます。私が持っている問題は、ビューのデータが絶えず変化しているので、現在のUIを復元することです。 –

+0

また、ホームボタンを押し続けてそこからアプリケーションを切り替えると、現在のuiが復元されます。しかし、私が家に押して、アプリケーションを切り替えると、それは消えます。 –

+0

値のリストを保存するだけです。直列化可能な配列全体をオブジェクトの配列に入れたり、リスト内の各項目のキー/値をループしてイテレータで格納することができます。復元に関しては、あなたのマニフェストに履歴フラグを設定していません。マニフェストで認識できないインテントフラグが設定されていないことを確認してください。 – Sam

関連する問題