【问题标题】:Android Studio - Settings Activity with just one fragment/no HeadersAndroid Studio - 只有一个片段/没有标题的设置活动
【发布时间】:2017-02-04 14:03:49
【问题描述】:

我是 android 开发新手,遇到一个问题: 我有一个普通的选项卡 MainActivity 并从 Android Studio 的设置活动模板创建了一个 SettingsActivity。 MainActivity 是 SettingsActivity 的分层父级。

在 MainActivity.java 中启动 SettingsActivity 的代码:

 Intent intent = new Intent(this, SettingsActivity.class);
        startActivity(intent);

我只想拥有一个设置页面。 从 Android 指南“addPreferencesFromResource();”开始已弃用并由 Preference 标头替换。但是有了这些首选项标题,我的 MainActivity 和我的实际设置页面(在 pref_settings.xml 中定义)之间又多了一个页面 在谷歌搜索如何摆脱这个额外的页面之后,我在 onCreate 方法的 SettingsActivity.java 中提出了这个语句:

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

    getFragmentManager().beginTransaction()
            .replace(android.R.id.content, new PillPreferenceFragment())
            .commit();
}

嗯,它确实解决了我的问题。启动 SettingsActivity 时会显示 pref_settings.xml。但是后退按钮不再起作用。它总是“返回”到 SettingsActivity 而不是 MainActivity。所以这是一个无限循环。 有谁知道是什么问题以及如何解决?

我希望,我的描述是可以理解的。如果您需要任何进一步的信息,请告诉我。

提前非常感谢! :)

【问题讨论】:

  • 我无法正确理解您要传达的内容,但我认为您要问的是如果用户按下后退按钮,则返回主要活动。它不会发生,因为你还没有实现反压。你有吗?

标签: java android android-fragments android-activity


【解决方案1】:

我自己找到了解决办法。

我必须在 SettingsActivity.java 中添加这段代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home:
        this.finish();
        return true;
    }
    return super.onOptionsItemSelected(item);
}

【讨论】:

    【解决方案2】:

    试试下面的代码:

    Intent i = new Intent(getApplicationContext(), SettingsActivity.class);
                startActivity(i);
                finish();
    

    在应用标签的android清单中添加这一行:

     android:launchMode="singleTask"
    

    并且不要忘记覆盖后按按钮:

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

    【讨论】:

    • 感谢您的快速回复。不幸的是,它并没有解决它。在我的清单文件中,我注意到 SettingsActivity 的标签没有任何意图过滤器。这可能很重要吗?
    • 通常 Intent 过滤器用于默认活动:stackoverflow.com/questions/3321514/…
    猜你喜欢
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多