2013-03-20 29 views
6

这是有关这一主题的清单代码:返回父活动与父活动中的错误清单

<activity 
     android:name="smartHomes.capstone.GeneralAndSecurity" 
     android:label="@string/title_activity_general_and_security" 
     android:parentActivityName="smartHomes.capstone.HomePage" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="smartHomes.capstone.HomePage" /> 
    </activity> 

这是错误日志:

03-20 21:19:18.227: E/AndroidRuntime(787): FATAL EXCEPTION: main 
    03-20 21:19:18.227: E/AndroidRuntime(787): java.lang.IllegalArgumentException: Activity   GeneralAndSecurity does not have a parent activity name specified. (Did you forget to add the android.support.PARENT_ACTIVITY <meta-data> element in your manifest?) 
    03-20 21:19:18.227: E/AndroidRuntime(787): at android.support.v4.app.NavUtils.navigateUpFromSameTask(NavUtils.java:177) 
    03-20 21:19:18.227: E/AndroidRuntime(787): at smartHomes.capstone.GeneralAndSecurity.onOptionsItemSelected(GeneralAndSecurity.java:41) 
    03-20 21:19:18.227: E/AndroidRuntime(787): at com.actionbarsherlock.app.SherlockActivity.onMenuItemSelected(SherlockActivity.java:208) 

请问我能知道为什么返回按钮是否返回错误?

+0

你能发布您的代码在你的'GeneralAndSecurity'类的第41行?日志说它在那里崩溃。也查看[这篇文章](http://stackoverflow.com/questions/12276027/how-can-i-return-to-a-parent-activity-correctly)问题/答案,看看他们是否有帮助。 – Mxyk 2013-03-20 22:21:28

回答

2

同样的工作对我来说没有meta-data

这里是我的榜样。

<activity android:name="com.redplanet.sandboxandroid.ui.MainActivity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.redplanet.sandboxandroid.ui.SecondActivity" 
     android:parentActivityName="com.redplanet.sandboxandroid.ui.MainActivity" > 
    </activity> 

我的SecondActivity类。

public class SecondActivity extends SherlockFragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.countries_list); 

     ActionBar actionBar = getSupportActionBar(); 
     actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP | ActionBar.DISPLAY_SHOW_TITLE); 

    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case android.R.id.home: 
      NavUtils.navigateUpFromSameTask(this); 
      break; 
     } 
     return super.onOptionsItemSelected(item); 

    } 

} 
+3

这可能适合你,因为android:parentActivityName是在api 16中引入的。为了支持api的级别4-16,你需要声明一个父级活动和上面的“android.support.PARENT_ACTIVITY”。 – speedynomads 2013-10-25 14:41:49

2

我遇到了同样的问题,但它只是包名中的拼写错误。你是否仔细检查包装和类名?

0

尝试在清单中添加这对你的父母活动:

android:allowBackup="true"

例子:

<activity 
    android:name=".View.MainActivity" 
    android:allowBackup="true"> 
</activity> 

<activity 
    android:name=".View.ChildActivity" 
    android:parentActivityName=".View.ChildActivity"> 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value=".View.MainActivity" /> 
</activity> 

而在你ChildActivity:

public class ChildActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_child); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       NavUtils.navigateUpFromSameTask(this); 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
}