Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Up按钮退出应用程序,而不是转到父应用程序_Java_Android_Android Activity_Android Navigation - Fatal编程技术网

Java Android Up按钮退出应用程序,而不是转到父应用程序

Java Android Up按钮退出应用程序,而不是转到父应用程序,java,android,android-activity,android-navigation,Java,Android,Android Activity,Android Navigation,因此,在我的应用程序中,当我按下“向上”按钮时,活动将退出,而不是转到其父级活动。这里可能出了什么问题 SettingsActivity.java: public class SettingsActivity extends AppCompatPreferenceActivity { private Toolbar mToolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCre

因此,在我的应用程序中,当我按下“向上”按钮时,活动将退出,而不是转到其父级
活动
。这里可能出了什么问题

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

}
}
此活动的名称:

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>

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

试试这段代码

@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);
finish();
}

将此添加到您的
设置活动中

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