我有一个Activity1
,会启动Activity2
。 Activity2
有一个列表,显示数据库中的一些值。
首次启动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>
任何帮助都将不胜感激。
答案 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);
}