java - 如何正确设置偏好 Activity ?

标签 java android

我正在努力设置我的首选项屏幕,但我似乎无法让我的首选项 Activity 正常工作。

我创建了一个名为 SettingsActivity 的新空白 Activity ,它扩展了 PreferenceActivity 并从 中删除了 setContentView(R.layout.activity_settings); >onCreate 方法,并将其替换为 addPreferencesFromResource(R.xml.preferences);

在我的主 Activity 类中,我设置了一个新 Intent ,当我单击 android 默认创建的设置按钮时调用我的 SettingsActivity 类。

我在我的 preferences.xml 中添加了一个测试项目,并使用这个结果运行它。我的导航栏怎么了?我必须做些什么来添加它吗? Android Studio 显示 addPreferencesFromResource 已弃用。我该怎么办?

enter image description here

调用SettingsActivity的MainActivity方法

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {

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

        return true;
    }

    return super.onOptionsItemSelected(item);
}

设置 Activity

public class SettingsActivity extends PreferenceActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);
}

这是我的 preferences.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen          
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"   
android:layout_height="match_parent">

<CheckBoxPreference
    android:key="test check box"
    android:title="Test"
    android:defaultValue="false"/>

</PreferenceScreen>

最佳答案

从 API 11 你应该切换到 PreferenceFragment ,它允许您拥有一个从 ActionBarActivity 扩展的 Activity(它为您提供操作栏)。

public static class SettingsFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.preferences);
    }
    ...
}

public class SettingsActivity extends ActionBarActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Display the fragment as the main content.
        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new SettingsFragment())
                .commit();
    }
}

来源:http://developer.android.com/guide/topics/ui/settings.html#Fragment

关于java - 如何正确设置偏好 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28734205/

相关文章:

java - 我可以限制 ViewFlipper 在执行 AsyncTask 之前翻转吗?

java - 使用 pojo/java bean 的 getter 方法获取属性/字段名称?

Java 性能不一致

android - 为什么用android studio生成签名apk总是出错,apk可以调试运行

android - 将大文本文件添加到 Assets 文件夹

java - 运行android项目时出现NoClassDefFoundError

java - 在基于图 block 的 map 中查找多边形的内部坐标

Java:确保线程永远不会切换上下文

java - 当我按下按钮时应用程序强制关闭?安卓

android - 将 byte[] 数组转换为 String 在 android 中出现异常