一時的に私のアクティビティレイアウトを保存したいと思います。私のレイアウトは、ll.addView(btn);
のような子を追加することによってLinearLayoutで作成されますが、別のインテントに移動してインテントが終了すると、追加されたボタンはすべて消えます。どうすればこれを防ぐことができますか?Androidのアクティビティを保存する動的に作成されたレイアウトonPause
答えて
onSaveInstanceState(Bundle)
とonRestoreInstanceState(Bundle)
を実装する必要があります。
onSaveInstanceState
には、ビューを動的にバンドルに作成するために必要な情報が格納されます。
onRestoreInstanceState
では、この情報をバンドルから取得し、動的レイアウトを再作成します。以下のような
何か:
@Override
public void onSaveInstanceState(Bundle bundle) {
bundle.putString("key", "value"); // use the appropriate 'put' method
// store as much info as you need
super.onSaveInstanceState(bundle);
}
@Override
public void onRestoreInstanceState(Bundle bundle) {
super.onRestoreInstanceState(bundle);
bundle.getString("key"); // again, use the appropriate 'get' method.
// get your stuff
// add views dynamically
}
また、あなたはonCreate
方法の代わりに、onRestoreInstanceState
方法から、あなたのレイアウトの動的ビューを復元することができます。あなたはあなたのために何がベストかを決める。
'onCreate'は' onRestoreInstanceState'の代替手段ではありません。 –
@BirendraSinghです。ドキュメントから: "両方のonCreate()とonRestoreInstanceState()コールバックメソッドは、インスタンス状態情報を含む同じBundleを受け取ります。" https://developer.android.com/guide/components/activities/activity-lifecycle.html#saras –
同じページから** onCreate()の間に状態を復元する代わりに、あなたは 'onRestoreInstanceState() '、*システムが' onStart() 'メソッドの後に呼び出す*。もし誰かが 'onStart()'を実装していくつかの状態変数を初期化すると、ロジックは壊れます。 –
Intent()アクションを使用してアクティビティの内容を常に更新するのを防ぐには、マニフェストファイルに移動して、タグを 'android:launchMode = "singleTask"という名前のアクティビティに追加します。 ここでは一例
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.TranscluscentBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
You can make use of onSaveInstanceState to save the view and
onRestoreInstanceState to retrieve the saved view.
private String someVarB;
...
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("btn_added", "true");
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
someVarB = savedInstanceState.getString("btn_added");
if(someVarB.equalsIgnoreCase(true))
{
ll.addView(btn);
}
}
- 1. Androidで自動生成されたGUIを保存するアクティビティ
- 2. 動的に作成されたレイアウトが表示されない
- 3. C#Windowsフォーム - 動的に作成されたオブジェクトのデータを保存する
- 4. Jqueryによって動的に作成されたページを保存する
- 5. アクティビティ間を行き来するときに動的に生成されたビューのインスタンスを保存する
- 6. ハッシュから動的に作成されたオブジェクトを保存する方法は?
- 7. 線形レイアウトの動的に作成されたビューの選択
- 8. Android:ネストされたレイアウトで動的にビューを追加する
- 9. レイアウトされたイメージをsdcardに保存
- 10. androidで動的に作成されたビューを取得する
- 11. rebex sftpで動的に作成されたMemoryStreamを保存できません
- 12. データベースに設定が保存された動的フォーム生成
- 13. NSTableViewにプログラムで作成されたNSTableColumnの自動保存?
- 14. 動的に作成されたアクティビティで共有設定を使用する
- 15. Rails動的に作成されたフィールドを保存する際に許容されないパラメータ
- 16. CheckBoxを動的に作成する動的に作成されたGridView
- 17. ListViewに動的に生成されたチェックボックス状態を保存する
- 18. Onclickのクッキーを動的に作成して保存する
- 19. 動的に入力されたデータをplistに保存する
- 20. Android:なぜアクティビティはonPauseですか?
- 21. Androidレイアウトを以前にプログラムで追加されたボタンで保存/ロードする
- 22. アクティビティを使用してAndroidでスクロールビューを動的に作成
- 23. Android - アクティブなアクティビティなしでonPauseをキャッチ
- 24. ファイルを保存して自動的にディレクトリを作成する
- 25. Androidスタジオ:動的に作成されたボタンのレイアウトが切り取られます
- 26. ASP.NET C#JQueryUIどのように動的に作成されたユーザーコントロールのアコーディオンのインデックスを保存するには?
- 27. 動的に生成されたdivの状態を保存してCookie/LocalStorageで保存する
- 28. 動的に変更されたHTMLを保存する
- 29. Androidのアクティビティがランダムに作成され、破棄される
- 30. Androidでデータとしてアクティビティのコンテキストやレイアウトを保存して復元する
なぜuは次のようにやりたいんですか? – Rahul
データはサービスから受信されます。ユーザーがデータ - >アクティビティを選択して表示 - >データ選択に戻る – Berrigan
ここでのすべての回答にもかかわらず、なぜあなたの活動が再現されているかを確認する必要があります。 – JacksOnF1re