如何导航到父级活动

那么当我工作的东西,我需要在我的应用程序中configuration操作栏我开始从http://developer.android.com ,我发现我在找什么

public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar's Up/Home button case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } return super.onOptionsItemSelected(item);} 

添加了

 <activity android:name="com.example.myfirstapp.DisplayMessageActivity" android:label="@string/title_activity_display_message" android:parentActivityName="com.example.myfirstapp.MainActivity" > <!-- Parent activity meta-data to support 4.0 and lower --> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.myfirstapp.MainActivity" /> </activity> 

 @Override public void onCreate(Bundle savedInstanceState) { ... getActionBar().setDisplayHomeAsUpEnabled(true); } 

我做了所有这一切,但是当我在我的程序中,我按下了操作栏中的向上button程序崩溃,这里是logcat

 09-04 12:54:02.087: E/AndroidRuntime(11033): FATAL EXCEPTION: main 09-04 12:54:02.087: E/AndroidRuntime(11033): java.lang.IllegalArgumentException: Activity LegendActivity does not have a parent activity name specified. (Did you forget to add the android.support.PARENT_ACTIVITY <meta-data> element in your manifest?) 09-04 12:54:02.087: E/AndroidRuntime(11033): at android.support.v4.app.NavUtils.navigateUpFromSameTask(NavUtils.java:177) 09-04 12:54:02.087: E/AndroidRuntime(11033): at com.yay.android.projects.stories.LegendActivity.onOptionsItemSelected(LegendActivity.java:44) 09-04 12:54:02.087: E/AndroidRuntime(11033): at android.app.Activity.onMenuItemSelected(Activity.java:2611) 09-04 12:54:02.087: E/AndroidRuntime(11033): at com.android.internal.widget.ActionBarView$3.onClick(ActionBarView.java:206) 09-04 12:54:02.087: E/AndroidRuntime(11033): at android.view.View.performClick(View.java:4261) 09-04 12:54:02.087: E/AndroidRuntime(11033): at android.view.View$PerformClick.run(View.java:17356) 09-04 12:54:02.087: E/AndroidRuntime(11033): at android.os.Handler.handleCallback(Handler.java:615) 09-04 12:54:02.087: E/AndroidRuntime(11033): at android.os.Handler.dispatchMessage(Handler.java:92) 09-04 12:54:02.087: E/AndroidRuntime(11033): at android.os.Looper.loop(Looper.java:137) 09-04 12:54:02.087: E/AndroidRuntime(11033): at android.app.ActivityThread.main(ActivityThread.java:4921) 09-04 12:54:02.087: E/AndroidRuntime(11033): at java.lang.reflect.Method.invokeNative(Native Method) 09-04 12:54:02.087: E/AndroidRuntime(11033): at java.lang.reflect.Method.invoke(Method.java:511) 09-04 12:54:02.087: E/AndroidRuntime(11033): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038) 09-04 12:54:02.087: E/AndroidRuntime(11033): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805) 09-04 12:54:02.087: E/AndroidRuntime(11033): at dalvik.system.NativeStart.main(Native Method) 

一切都像他们所说的,因为我已经改变了名称对应的活动名称,我有什么问题呢?

Solutions Collecting From Web of "如何导航到父级活动"

您必须在Maniifest文件中设置父活动

 <activity android:name="com.example.MainActivity" android:label="@string/title_activity_main" android:parentActivityName="com.example.MainUIActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.SampleActivity" /> </activity> 

或者按如下方式使用Support-V4

 NavUtils.navigateUpTo(sourceActivity, upIntent); 

或者尝试在这篇文章中提到的解决scheme

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: Intent upIntent = new Intent(this, YourListActivity.class); if (NavUtils.shouldUpRecreateTask(this, upIntent)) { // This activity is not part of the application's task, so // create a new task // with a synthesized back stack. TaskStackBuilder .from(this) .addNextIntent(new Intent(this, HomeActivity.class)) .addNextIntent(upIntent).startActivities(); finish(); } else { // This activity is part of the application's task, so simply // navigate up to the hierarchical parent activity. NavUtils.navigateUpTo(this, upIntent); } return true; } } 

这是使用android级别低于API级别11的最佳方法