Android ToolBar Up按钮未启动Parent Activity

时间:2016-09-19 12:52:57

标签: android android-activity android-toolbar

我有一个应用程序,我首先显示一个设置屏幕,用户可以保存一些细节,我想在用户单击工具栏中的向上按钮时启动主要活动,但是当前单击向上按钮时,应用程序才会关闭。 / p>

这是我的清单

  <activity
        android:name="com.xyz.activity.MainActivity"
        android:label="@string/title_activity_welcome"
        android:launchMode="standard"
        android:theme="@style/MyMaterialTheme" />
    <activity
        android:name="com.xyz.activity.IntroActivity"
        android:theme="@style/MyMaterialTheme">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="com.xyz.activity.SetLocationActivity"
        android:parentActivityName="com.xyz.activity.MainActivity">
        <!-- Parent activity meta-data to support 4.0 and lower -->
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.xyz.activity.MainActivity" />
    </activity>

并且

 @Override
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);

}

任何帮助

2 个答案:

答案 0 :(得分:1)

如下所示指定android:parentActivityName属性和<meta-data.../>

    <activity
        android:name=".activity.EditProfileActivity"
        android:label="@string/title_activity_edit_profile"
        android:parentActivityName=".activity.ProfileActivity"
        android:theme="@style/AppTheme.NoActionBar">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.via.android.activity.ProfileActivity" />
    </activity>

你只需要设置        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

中的onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    ...
}

其余部分由Android Framework处理。

从您的代码中删除以下内容:

 @Override
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);

}

答案 1 :(得分:0)

这就是我最终要做的事情(如果有人觉得有帮助的话)

  @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        // Respond to the action bar's Up/Home button
        case android.R.id.home:
            Intent intent = new Intent(this, MainActivity.class);
            startActivity(intent);
            return true;
    }
    return super.onOptionsItemSelected(item);

}