【问题标题】:Complete code for adding an OnClickListener to a Preference将 OnClickListener 添加到首选项的完整代码
【发布时间】:2020-07-15 14:21:07
【问题描述】:

好吧,我发誓这是我最后一次问这个问题了。我已经尝试过一万亿种不同的解决方案,但都没有奏效。

首先是由 Android Studio 创建的空白设置活动:

public class SettingsActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.settings_activity);
    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.settings, new SettingsFragment())
            .commit();


    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.setDisplayHomeAsUpEnabled(true);

    }


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

}

这是我的偏好 xml:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <Preference
        android:id="@+id/resetSettings"
        android:defaultValue="true"
        android:key="reset_settings"
        android:selectAllOnFocus="true"
        android:singleLine="true"
        android:summary="@string/reset_description"
        android:title="@string/reset_title" />
    <SwitchPreference
        android:defaultValue="false"
        android:key="switch_preference"
        android:summary="Instead of values from 0 to 255, the seekBar will use percentages"
        android:title="Use Percentages" />

</PreferenceScreen>

我希望将 OnClickListener 附加到重置首选项,以便它可以打开一个警报对话框,询问用户是否要删除所有应用数据。

【问题讨论】:

    标签: java android android-studio android-fragments


    【解决方案1】:

    在 onCreatePreference 的设置片段中添加:

    Preference 
    resetPreference=findPreference("your Preference key");
    

    然后为点击监听添加:

    resetPreference.setOnPreferenceClickListenere(new 
    Preference.OnPreferenceClickListener() {
    
    @overide
    public boolean onPreferenceClick(Preference preference) 
     {
           //your code goes here
           return false;
      }
    });
    

    【讨论】:

    • 该函数需要在 SettingsFragment 中使用,这是一个不能使用非静态方法的静态类
    • 设置片段不需要是静态的,因为它不是内部类
    • 等等,这个网站搞砸了我复制/粘贴的代码
    • 修复了它。非常抱歉。
    • SettingsFragment 是一个静态内部类。这就是 Android Studio 的制作方式。
    猜你喜欢
    • 1970-01-01
    • 2023-03-26
    • 2011-08-11
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多