0

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

public class fragact extends PreferenceFragment
{

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

}

在我的主要活动中,我试图通过单击按钮来显示片段。但是片段变得透明并且不是很明显,并且可以通过它看到底层屏幕。为什么片段不正确。我创建了另一个活动并用它来显示片段。它工作正常。但是为什么我们可以直接显示片段而不是通过其 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"));

    }
4

2 回答 2

0

也许尝试替换不透明的 id

android.R.id.content

使用您在活动 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());
于 2014-08-06T13:21:21.470 回答
0

您不妨按照 WannaGetHigh 在How do you create Preference Activity and Preference Fragment on Android 中给出的方式创建一个 preferenceActivity?

于 2015-03-18T07:56:22.907 回答