我正在使用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"));
}
答案 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