Android MainActivity在新活动开始时已销毁?
我有一个以ListView作为主要活动的活动。选择列表中的某个项目后,它将启动一个新活动,显示所选列表中该项目的详细信息。代码运行正常,相关细节如下:Android MainActivity在新活动开始时已销毁?,android,android-activity,android-lifecycle,Android,Android Activity,Android Lifecycle,我有一个以ListView作为主要活动的活动。选择列表中的某个项目后,它将启动一个新活动,显示所选列表中该项目的详细信息。代码运行正常,相关细节如下: public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVi
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);
}
});
}
我不想要这个
太糟糕了。这就是它的工作原理,你对此无能为力
请注意,这种情况并不总是发生。但它可能总是发生,你必须编写你的应用程序,以便它的所有活动都可以被销毁,并对用户透明地重新创建。这正是“不保留活动”开发人员选项的目的。一个性能良好的应用程序将在该选项打开时完美工作。在设备/模拟器中检查开发人员选项。具体检查“不保留活动”是否未选中
注意:您不能总是保证父活动不会被销毁。如果系统内存不足,操作系统可能会终止父活动。在启动SingleContactActivity之前,您应该对此做好准备,并在父活动中保存所有必要的数据。hmm。。您可以做的是,在新活动中不显示信息,而是使用对话框。这样,您的活动将保持活动状态,因此不会被重新创建 如果您想要全屏显示,可以使用:
MyDialog=newdialog(mContext,android.R.style.Theme\u NoTitleBar\u全屏显示)代码>
使用自己的布局: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;
}
});
希望这能帮到你;) 您如何在AndroidManifest中声明您的主要活动?您正在使用android:launchMode=“singleTop”@|-|我刚刚上传了文件。我只是离开了Android Studio的默认设置,不幸的是,一次只能有一个活动处于活动状态。使用片段代替。
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;
}
});