【问题标题】:Preference Not Displayed - Preference Fragment首选项未显示 - 首选项片段
【发布时间】:2015-01-17 09:17:04
【问题描述】:

我正在尝试创建一个 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();
}

}

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>

【问题讨论】:

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


    【解决方案1】:

    我在第一部 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>
    

    【讨论】:

    • 谢谢。工作完美。我想 ActionBarActivity 需要一个可以处理的视图?
    • @Bhargav,这是我目前的假设。如果我遇到更好的解决方案或原始问题的原因,我会告诉您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 2015-09-30
    相关资源
    最近更新 更多