PreferenceFragment未正确显示

时间:2013-07-28 07:55:48

标签: android

我正在使用PreferenceFragment来获取用户的偏好。我设计了一个只有一个EditPreference的简单首选项文件。我创建了以下preferencefragement文件

public class fragact extends PreferenceFragment
{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.fragpref);
    }

}

在我的主要活动中,我试图在点击按钮时显示片段。然而片段变得透明并且不是很明显,并且通过它可以看到底层屏幕。 为什么片段不合适。我创建了另一个活动并用它来显示fragment.it正常工作。但是为什么我们可以直接显示片段而不是通过其oncreate中的另一个活动显示并通过类fragprefmain中的startActivity调用它。

public class fragprefmain extends Activity
{
    EditText et;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragpref);
        et=(EditText)findViewById(R.id.editText1);
    }

    public void showp(View v)
    {
        FragmentManager fm=getFragmentManager();
        FragmentTransaction ft=fm.beginTransaction();
        ft.replace(android.R.id.content, new fragact());
        ft.commit();
    }

    public void showval(View v)
    {
        SharedPreferences sp=PreferenceManager.getDefaultSharedPreferences(this);
        et.setText(sp.getString("ekey", "no valued given"));

    }

2 个答案:

答案 0 :(得分:0)

可能会尝试替换opaque id

android.R.id.content

使用您在activity xml文件中定义的自己的布局ID

它可以是一个空布局,但你必须给布局一个id,比如说:

 <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/my_layout_id">

所以现在你得到:

.replace/add(R.id.my_layout_id, new fragact());

答案 1 :(得分:0)

你也可以在How do you create Preference Activity and Preference Fragment on Android?

中创建一个由WannaGetHigh给出的preferenceActivity