我有一个以ListView作为主Activity的Activity。当选择列表中的某个项目时,它会启动一个新活动,显示所选列表中有关该项目的详细信息。代码运行正常,相关细节如下:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("test","test");
ListView listView=(ListView) findViewById(R.id.name_list);
ListAdapter adapter=new SimpleAdapter(this,contactList,
R.layout.list_item,new String[]{TAGS[2]},new int[]{R.id.list_name_display});
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){
Intent intent=new Intent(MainActivity.this,SingleContactActivity.class);
intent.putExtra(EXTRA_CONTACT_POSITION,position);
startActivity(intent);
}
});
}
新创建的活动有主要活动作为其父项,所以当我完成查看后,按操作栏上的向上按钮返回列表视图。但是,Log.d(...)
行告诉我每次进入详细信息活动,然后返回主活动,都会重新创建主要活动。
我不想要这个以及我读这个的方式:https://developer.android.com/training/basics/activity-lifecycle/stopping.html是主要活动应该在新活动开始时停止,然后开始然后按下向上按钮继续。有人知道我的主要活动被销毁的原因吗?
感谢您的帮助
编辑: 清单文件
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".SingleContactActivity"
android:label="@string/title_activity_single_contact"
android:parentActivityName=".MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.jefe.jefecontacts.MainActivity" />
</activity>
</application>
答案 0 :(得分:4)
检查设备/模拟器中的开发人员选项。具体检查是否取消选中“不要保持活动”。
注意:您无法始终保证不会销毁父活动。如果系统内存不足,操作系统可能会终止父活动。在启动SingleContactActivity之前,您应该为此做好准备并将所有必要数据保存在父活动中。
答案 1 :(得分:1)
我不想要这个。 。
太糟糕了。这是它的工作原理,你无法做任何事情。
请注意,这并不总是发生。但可能总是会发生,您必须编写应用程序,以便可以销毁所有活动并以透明方式重新创建用户。这正是“不要保持活动”开发人员选项的用途。一个表现良好的应用程序将与打开的选项完美配合。
答案 2 :(得分:1)
如果您想全屏显示,可以使用:MyDialog = new Dialog(mContext, android.R.style.Theme_NoTitleBar_Fullscreen);
使用您自己的布局:MyDialog.setContentView(R.layout.myLayout);
添加按钮(如后退按钮):final Button myBackButton = (Button)MyDialog.findViewById(R.id.my_back_button);
并使用它们:
myBackButton.setOnClickListenernew View.OnClickListener() {
@Override
public void onClick(View v) {
MyDialog.dismiss();
}
});
或覆盖键:
MyDialog.setOnKeyListener(new Dialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface arg0, int keyCode,
KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) { //Back key pressed
MyDialog.dismiss();
}
return true;
}
});
希望这会帮助你;)