如何创建设置 activity

How can I create a Setting activity

我在我的应用程序中创建了一个设置 activity,但它没有用。 这是我的 SettingFragment class:

public class SettingFragment extends PreferenceFragmentCompat
{
    @Override
    public void onCreatePreferences(Bundle savedInstanceState, String rootKey)
    {
        setPreferencesFromResource(R.xml.pref, rootKey);
    }
}

这是我的 SettingActivity:

public class SettingActivity extends AppCompatActivity
{
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setting);
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.content, new SettingFragment())
                .commit();
    }
}

这是MainActivity。单击该按钮将打开 SettingActivity.

btn.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                Intent intent = new Intent(MainActivity.this, SettingActivity.class);
                startActivity(intent);
            }
        });

这是Preference.xml:

<PreferenceScreen 
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <Preference
        app:key="feedback"
        app:title="Send feedback"
        app:summary="Report technical issues or suggest new features"/>

</PreferenceScreen>

什么是R.id.contentdeveloper.android 站点示例中使用了它。 问题是什么?我该如何解决?

您需要使用 android.R.id.content。这将用片段的内容替换根内容。您可以从 this

找到更多关于 android.R.id.content 的信息
// Display the fragment as the main content.
getSupportFragmentManager()
                .beginTransaction()
                .replace(android.R.id.content, new SettingFragment())
                .commit();

What is the R.id.content?

假设这是 SettingActivity 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".SettingsActivity">

    <LinearLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="16dp" >
    </LinearLayout>

</LinearLayout>

调用 replace 会将您的片段与 R.id.content 交换。您也可以用 android.R.id.content 调用替换,阅读更多 here.