0

ユーザーから設定を取得するために PreferenceFragment を使用しています。EditPreference を 1 つだけ持つ単純な設定ファイルを設計しました。次のプリファレンスフラグメントファイルを作成しました

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

Android で Preference アクティビティと Preference フラグメントを作成するにはどうすればよいですか?

于 2015-03-18T07:56:22.907 に答える
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 に答える