Android 中首选项活动的 onclick 侦听器

Rai*_*Man 5 java android android-preferences android-activity

我正在按照此文档创建一个设置页面。我根据文档创建了两个java类:

设置Fragment.java:

public static class SettingsFragment extends PreferenceFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Load the preferences from an XML resource
        addPreferencesFromResource(R.xml.preferences);
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

设置活动.java

public class SettingsActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Display the fragment as the main content.
        getFragmentManager().beginTransaction()
                .replace(android.R.id.content, new SettingsFragment())
                .commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

在首选项中,我有一个带有键的项目premium_support,我想为其创建一个点击侦听器。

 <CheckBoxPreference
        android:key="@string/premium_support"
        android:title="Premium Support"
        android:summary="Purchase premium support"
        android:defaultValue="false" />
Run Code Online (Sandbox Code Playgroud)

我无法在片段中创建点击侦听器,因为我在 SettingsActivity 中有应用内计费代码。我尝试了这个答案,但似乎findPreference仅适用于首选项片段。

知道如何在 SettingsActivity 中实现点击监听器吗?

Dar*_*ush 6

onCreate()方法中SettingsActivity

Preference preference = findPreference("prefs_key");
preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
   @Override
   public boolean onPreferenceClick(Preference preference) {
       Toast.makeText(SettingsActivity.this, "Clicked", Toast.LENGTH_SHORT).show();
       return true;
   }
});
Run Code Online (Sandbox Code Playgroud)