2

我正在尝试创建一个 SettingsActivity 并使用 Fragment 扩展 PreferenceFragment 来实现这一点。我的活动正在显示,而首选项不是。

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

}

首选项.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>

在此处输入图像描述

4

1 回答 1

4

我在第一部 Moto X 手机上测试时遇到了同样的问题。这就是我最终做的事情,现在它工作正常:我在添加片段之前向 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>
于 2015-01-20T21:48:05.633 回答