繁体   English   中英

如何 go 回到上一个活动

[英]How to go back to previous activity

我对 android 上的活动的生命周期有疑问。 我正试图从我的第二个活动返回到我的第一个活动。 实际上我的代码是这样做的,而不是它应该这样做的方式。 我在左上角有“后退按钮”,当我点击它时 - 它通过我的MainActivityonDestroy()onCreate()方法。 但是,如果我使用手机上的后退按钮 - 一切正常(它只是通过onResume()方法) 有人可以解释一下 - 我的代码哪里出错了吗?

在 MainActivity.java 中:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.settings_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        Intent intent = new Intent(MainActivity.this, SettingsActivity.class);
        startActivity(intent);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

在我的 SettingsActivity.java 中:

package com.example.garagedoor;

import android.os.Bundle;

import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import androidx.preference.PreferenceFragmentCompat;

public class SettingsActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings_activity);
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.settings, new SettingsFragment())
                .commit();
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
    }

    public static class SettingsFragment extends PreferenceFragmentCompat {
        @Override
        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
            setPreferencesFromResource(R.xml.root_preferences, rootKey);
        }
    }
}

在 AndroidManifest.xml 中:

<activity android:name=".MainActivity">
        <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=".MainActivity">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity"/>
    </activity>

您需要添加

android:launchMode="singleTop"

MainActivity的清单条目。 请参阅以下问题:

ActionBar 向上导航重新创建父活动而不是 onResume

如何正确返回父活动?

您的问题可能与任务堆栈有关。 我不确定操作栏按钮的作用,但我认为您应该使用

@Override public void onBackPressed()

SettingsActivity或使用Intent 标志启动 SettingsActivity,如下所示:

https://developer.android.com/guide/components/activities/tasks-and-back-stack

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM