2

我有一个Activity1which launchs 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();

这第一次效果很好,但在第二次执行中,referenceToActivity 指向第一个活动

于 2013-06-13T16:13:23.990 回答
0

您可能只希望应用程序中有一个活动 Activity2。如果是这样,我建议您在 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 回答