返回显示清单中父活动错误的父活动

时间:2013-03-20 21:41:45

标签: android

这是与主题相关的清单代码:

   <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)

我能否知道为什么退货按钮会给我一个错误?

3 个答案:

答案 0 :(得分: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);

    }

}

答案 1 :(得分:2)

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

答案 2 :(得分:0)

尝试使用您的清单将其添加到您的父级Activity:

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);
    }
}