android - 未显示首选项 - 首选项 fragment

标签 android android-activity android-fragments android-preferences preferencefragment

我正在尝试创建一个 SettingsActivity 并使用扩展 PreferenceFragment 的 Fragment 来实现此目的。正在显示“我的 Activity ”,但未显示首选项。

SettingsActivity.java

public class SettingsActivity extends ActionBarActivity {

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


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

}

SettingsFragment.java

public  class SettingsFragment extends PreferenceFragment {



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.pref);
    Toast ts = Toast.makeText(getActivity(),"Working",Toast.LENGTH_SHORT);
    ts.show();
}

}

pref.xml

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen  xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
    android:key="@string/prefsync"
    android:title="@string/pre_name"
    android:summary="@string/summary"
    android:defaultValue="true" />

 </PreferenceScreen>

enter image description here

最佳答案

我在第一部 Moto X 手机上测试时遇到了同样的问题。这就是我最终所做的,现在工作正常:在添加 fragment 之前,我向 SettingsActivity 添加了一个空布局。

public class SettingsActivity extends ActionBarActivity {

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

        //Need to set layout to blank if we want to add fragments to it.
        setContentView(R.layout.activity_settings);

        getFragmentManager()
                .beginTransaction()
                .add( android.R.id.content, new SettingsFragment() )
                .commit();
    }

}

为布局加载的 xml 文件是 Android Studio 通常创建的空白布局。看起来像这样。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.wordscroll.wordscroll.SettingsActivity">

</RelativeLayout>

关于android - 未显示首选项 - 首选项 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27997969/

相关文章:

java - 覆盖在非 Activity 类中不起作用

android - 保存位图不适用于 dialogfragment

android - 将 RecyclerView(Recycler Fragment) 添加到对话框

java - getSupportFragmentManager() 不适用于 fragment 类的 onCreateView() 方法。

android - 带有 RequestMultiplePermissions 契约(Contract)的 ActivityResultLauncher 在启动时不显示权限 UI

android - 如何创建弯曲的折叠工具栏布局?

android - 差异 : android:background and android:src?

Android - 获取自定义对话框中组件的句柄

c# - 可拖动的Boxview崩溃错误Xamarin

android - 如何让我的 android 应用程序以超省电模式显示