java - Android Up按钮退出应用程序而不是去父级

标签 java android android-activity android-navigation

所以在我的应用程序中,当我按下向上按钮时,Activity 退出而不是转到其父 Activity。这里可能出了什么问题?

SettingsActivity.java:

public class SettingsActivity extends AppCompatPreferenceActivity {

private Toolbar mToolbar;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ViewGroup root = (ViewGroup) findViewById(android.R.id.content);
    LinearLayout content = (LinearLayout) root.getChildAt(0);
    LinearLayout toolbarContainer = (LinearLayout) View.inflate(this, R.layout.activity_settings, null);

    root.removeAllViews();
    toolbarContainer.addView(content);
    root.addView(toolbarContainer);

    mToolbar = (Toolbar) toolbarContainer.findViewById(R.id.toolbar);
    setSupportActionBar(mToolbar);
    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        // Show the Up button in the action bar.
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
    addPreferencesFromResource(R.xml.pref_general);

}


@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    int id = item.getItemId();
    if (id == android.R.id.home) {
        onBackPressed();
        return true;
    }
    return super.onMenuItemSelected(featureId, item);
}

@Override
public void onBackPressed() {
    super.onBackPressed();
    NavUtils.navigateUpFromSameTask(this);

}
}

如何调用此 Activity :

private void openSettingsActivity() {
    Intent intent = new Intent(getApplicationContext(), SettingsActivity.class);
    startActivity(intent);
}

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="pt.bluecover.wearable3d"
android:versionCode="1"
android:versionName="1.0">

<uses-sdk
    android:minSdkVersion="15"
    android:targetSdkVersion="23" />

<android:uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<android:uses-permission android:name="android.permission.READ_PHONE_STATE" />
<android:uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

<application
    android:allowBackup="true"
    android:icon="@drawable/female_icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".DrawerActivity"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:label="@string/app_name"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".SettingsActivity"
        android:label="@string/title_activity_settings"
        android:parentActivityName=".DrawerActivity"
        android:screenOrientation="portrait">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="pt.bluecover.wearable3d.DrawerActivity" />
    </activity>
</application>
</manifest>

那么,这种行为可能有什么问题?

最佳答案

将此添加到您的 SettingsActivity

@Override
public boolean onOptionsItemSelected(MenuItem menuItem) {
    if (menuItem.getItemId() == android.R.id.home) {
        onBackPressed();
    }
    return super.onOptionsItemSelected(menuItem);
}

不要忘记覆盖 onBackPressed 并调用 super.onBackPressed();

@Override
public void onBackPressed() {
super.onBackPressed();
}

关于java - Android Up按钮退出应用程序而不是去父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37322079/

相关文章:

java - Oracle、Hibernate、分组依据、LISTAGG

android - 有没有一种方法可以捕获所有错误而又不会在try语句中乱扔我的代码?

android - Android 3.0+ 问题上的 db4o

android - 低级别 Activity 的向上按钮自动工作,为什么? (setDisplayHomeAsUpEnabled)

Android 应用程序生命周期说明

java - 具有优先级的消息处理

java - 访问其他 bean 或属性时 Jsf NullPointerException ManagedBean

Android Gson.fromJson 错误

android - 我的设置 Activity 的布局文件在哪里?

java - 我可以同时在不同端口上运行selenium服务器吗?