第二次启动活动时的奇怪行为

时间:2013-06-13 11:07:17

标签: android android-listview android-activity

我有一个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>

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:1)

最后我在我的代码中发现了错误:对于项目需求,我们保留一些结构作为服务器事件的监听器。 registration就是其中之一。

从活动中注册听众的方法是:

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

所以我保留了之前活动的引用,然后,当活动收到我们在帖子中发生的registration事件时:

referenceToActivity.doSomeStuffOnUIThreadAfterRegister();

第一次运行良好,但在第二次执行时,referenceToActivity指向第一个活动

答案 1 :(得分:0)

您可能只希望在应用中有一个Activity2存活。如果是这样,我建议您在Activity2的清单中包含以下内容

android:launchMode="singleTask"

这可能会解决您的问题。有关说明,请参阅the android documentation

答案 2 :(得分:0)

只需尝试将此代码段放在Activity2类

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

    }