大きなプロジェクトで問題が発生しました。私はそれを要約して、重要なポイントが何であるかにまとめてみます. いくつかActivity
の で構成されるアプリがあります。そのうちの 1 つは、他のアプリが起動されるメインのナビゲーション ポイントです。
メインActivity
が破棄されて再作成されると (別の場所に移動しActivity
て戻ることによって)、ビューの更新が機能しないようです。具体的には、私はButton
といくつかTextView
の を持っています。が再作成された後、Activity
テキストを変更することはできません。背景色を変更しようとしましたがActivity
、それも機能しません。
最初に考えたのは、保存/復元プロセス中に重要なデータ メンバーを見逃したということでした。しかし、私はそれをかなり見てきましたが、それは問題ではないと思います. また、保存されたデータをロードせずに最初からやり直そうとしましたが、それでもビューは更新されません。
次に、UI スレッドで更新していない可能性があると考えました。例外が発生することは確かですが、確かに、に更新を投稿しましたHandler
。まだサイコロはありません。
ただし、UI の変更をonClick()
. その場合、何が機能し、何が機能しないかは別の疑問を引き起こします (データの一部が破損している) ので、現在はそこに集中して調査を行っています。より多くの地図ができたら、更新を提供します。
他に何を見ればいいですか?
更新: いくつかのスニペットを追加:
からonCreate()
:
if (savedInstanceState != null) {
Log.v(Calculations.log, "Restarting with saved instance state");
Serializable ser = savedInstanceState.getSerializable("infusion");
if ((ser != null) && (ser instanceof Infusion)) {
mInfusion = (Infusion) ser;
}
mBeganEditing = savedInstanceState.getBoolean("editing",
mInfusion != null);
Log.v(Calculations.log, this.toString());
}
およびその一致onSaveInstanceState()
:
@Override
protected void onSaveInstanceState(Bundle outState) {
Log.v(Calculations.log, "StageInfusion::onSaveInstanceState()");
Log.v(Calculations.log, this.toString());
outState.putSerializable("infusion", mInfusion);
outState.putBoolean("editing", mBeganEditing);
outState.putBoolean("resume", true);
ServerManager.stopListening();
super.onSaveInstanceState(outState);
}
他にも救われるべきメンバーがいると思いますが、それらは重要ではありません。