use*_*210 -1 android android-lifecycle android-activity
我有一个以 ListView 作为主要活动的活动。选择列表中的一个项目时,它将启动新的活动,从选中的列表中显示有关项目的详细信息。代码运行良好,相关细节如下:
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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
新创建的活动具有作为父活动的主要活动,因此当我查看完它时,我按操作栏上的向上按钮返回到列表视图。但是,该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>
Run Code Online (Sandbox Code Playgroud)
检查设备/模拟器中的开发人员选项。特别检查“不要保持活动”是否未选中。
注意:您不能总是保证父 Activity 不会被销毁。如果系统内存不足,操作系统可能会终止父活动。您应该为此做好准备,并在启动 SingleContactActivity 之前将所有必要的数据保存在父活动中。