0

大きなプロジェクトで問題が発生しました。私はそれを要約して、重要なポイントが何であるかにまとめてみます. いくつか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);
}

他にも救われるべきメンバーがいると思いますが、それらは重要ではありません。

4

0 に答える 0