2

Activity1起動するがありますActivity2Activity2データベースからのいくつかの値を示すリストがあります。

を初めて起動するActivity2とリストに正しい情報が表示されますが、[戻る] ボタンを押してActivity2からもう一度起動すると、データベースから情報が正しく読み込まれますが、リストには表示されません。

Activity2開始するコードActivity1:

final Intent int2 = new Intent(getActivity(), CombinationsManagerActivity.class);
MyActivity.insertSomeExtraInfoToTheIntent(int2, currentEmployee.id);
getActivity().startActivity(int2);

リストのコードは次のActivity2とおりです (アクティビティがサーバーに登録されるときに呼び出します (onResume の後)):

private void fillList() {

        list = (ListView) findViewById(R.id.list_combinations);
        ZKEmployeeLoginCombination combinations = ZKEmployeeLoginCombination.selectLoginCombinationsByEntityID(this, idEmployee);
        LoginCombinationsListAdapter adapter = new LoginCombinationsListAdapter(this, combinations, enrolledTypes);
        list.setAdapter(adapter);

    }

また、Activity2マニフェスト宣言:

  <activity
            android:name="com.blabla.android.app.employeemanagementv3.CombinationsManagerActivity"
            android:label="@string/combinations_manager" >
        </activity>

どんな助けでも大歓迎です。

4

3 に答える 3

1

最後に、コードにバグが見つかりました。プロジェクトの要件のために、サーバーイベントからのリスナーとして機能する構造をいくつか保持しています。そしてregistrationその一人でした。

アクティビティからリスナーを登録する方法は次のとおりです。

private static IncomingEventHandler eventHandler = new IncomingEventHandler();
...
if(eventHandler.get(this.name) == null){
eventHandler.add(this.name, this);
}

そのため、以前のアクティビティからの参照を保持していました。その後、アクティビティregistrationがポストで行っていたイベントを受け取ると、次のようになります。

referenceToActivity.doSomeStuffOnUIThreadAfterRegister();

これは最初はうまくいきますが、2 回目の実行では referenceToActivity が最初のアクティビティを指していました。

于 2013-06-13T16:13:23.990 に答える
0

おそらく、アプリ内で Activity2 を 1 つだけ有効にしたいことがあります。その場合、Activity2 のマニフェストに以下を含めることをお勧めします。

android:launchMode="singleTask"

それはあなたの問題を解決するかもしれません。説明については、Android のドキュメントを参照してください。

于 2013-06-13T11:14:40.920 に答える
0

このコード スニペットを Activity2 クラスに配置して試してみてください

    @Override
    public void onBackPressed() {
        Intent startNewActivityOpen = new Intent(Activity2.this, Activity1.class);
        startActivity(startNewActivityOpen);

    }
于 2013-06-13T16:21:18.257 に答える