2013-03-20 93 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); 
    } 
}