0

データが依存関係などの値に依存するListViewあるActivity_Aがあります

このActivity_Bから、ユーザーはActivity_Bに移動し、依存関係の値を変更できます。

この依存関係はListViewのデータを変更する必要があるため、ListViewをリロードする必要があるため、次のようにしました。

if(//dependency is changed){
Intent intent = new Intent(Activity_B.this,Activity_A.class);
startActivity(intent);
}

ListViewには新しいデータが入力されます。

問題:

この新しくロードされたActivity_Aからデバイスの戻るボタンを2回押すと、以前のListViewデータを含むActivit_Aになります。したがって、アイテムをクリックしようとすると、この例外が発生します

The content of the adapter has changed but ListView  did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread

これを回避する方法は??

ありがとうございました

4

3 に答える 3

1

dependencyに値を保存し、の値にSharedPreferences基づいてリストにデータを入力できます。dependencyActivity_A onResume()

于 2012-10-18T08:43:56.543 に答える
1

前のアクティビティに戻るには、newを呼び出さないでくださいintent。ただあなたを呼んfinish()でくださいACtivity B。次に、のでonResume()、を新しい値Activity Aで更新します。listview

Activity Aここでは、新しいアクティビティとして呼び出していますが、前のアクティビティActivity Aはまだbackstackです。ACtivity Aしたがって、押し戻すと、最初のアクティビティであるに到達します。しかし、入力する値listviewは変更されました。したがって、何かをクリックしようとすると、例外が発生します。それが問題です。

したがって、値をに変更するときは、listviewを呼び出します。に戻ります。アクティビティAで、を更新しますfinish()Activity BActivity AonResume()listview.

于 2012-10-18T08:57:04.060 に答える
0

アクティビティAにはListViewがあります

アクティビティAonResume()メソッドで、 ListViewのアダプタを設定します。

インテントを介してActivity_Bに移動し 、

依存関係。ボタンクリックで再度開始しないでくださいアクティビティAは終了するだけです

Activity_B。次に、アクティビティAのonResume()メソッドが自動的に呼び出され、

再びlistviewがロードされます。したがって、効果をリストビューの値に変更します

注:依存関係を静的として宣言することを忘れないでください。

于 2012-10-18T09:33:10.823 に答える