Android将ChangeListener设置为Preference(Android Setting ChangeListener to Preference)

编程入门 行业动态 更新时间:2024-10-25 21:20:52
Android将ChangeListener设置为Preference(Android Setting ChangeListener to Preference)

我想在单击首选项时打开一个对话框。 结果。 它什么都不做。 这是偏好活动

public class SettingsPrefActivity extends PreferenceActivity { ... Preference.OnPreferenceChangeListener changeInfoListener = new Preference.OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { Log.i("TAG","Click in Pref"); dialogCustom(findViewById(android.R.id.content)); return true; } }; Preference prefInfo = (Preference) findPreference("pref_info"); prefInfo.setOnPreferenceChangeListener(changeInfoListener); } public void dialogCustom(View v) { Log.i("TAG","Dialog"); final Dialog dialog = new Dialog(getApplicationContext()); dialog.setContentView(R.layout.dialog_info); dialog.setTitle("INFORMATION"); dialog.setCancelable(true); Button button = (Button) dialog.findViewById(R.id.buttonOK); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { dialog.dismiss(); } }); dialog.show(); }

这是pref xml的一部分

<PreferenceCategory android:title="ABOUT" android:key="about_category" android:layout="@layout/prefcatcustomlayout" > <Preference android:key="pref_version" android:title="Version" android:summary="1.0" /> <Preference android:key="pref_info" android:title="Information" android:summary="" /> </PreferenceCategory>

I am trying to open a dialog when a preference is clicked. The result. It does nothing. Here is the Preference Activity

public class SettingsPrefActivity extends PreferenceActivity { ... Preference.OnPreferenceChangeListener changeInfoListener = new Preference.OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { Log.i("TAG","Click in Pref"); dialogCustom(findViewById(android.R.id.content)); return true; } }; Preference prefInfo = (Preference) findPreference("pref_info"); prefInfo.setOnPreferenceChangeListener(changeInfoListener); } public void dialogCustom(View v) { Log.i("TAG","Dialog"); final Dialog dialog = new Dialog(getApplicationContext()); dialog.setContentView(R.layout.dialog_info); dialog.setTitle("INFORMATION"); dialog.setCancelable(true); Button button = (Button) dialog.findViewById(R.id.buttonOK); button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { dialog.dismiss(); } }); dialog.show(); }

Here is part of the pref xml

<PreferenceCategory android:title="ABOUT" android:key="about_category" android:layout="@layout/prefcatcustomlayout" > <Preference android:key="pref_version" android:title="Version" android:summary="1.0" /> <Preference android:key="pref_info" android:title="Information" android:summary="" /> </PreferenceCategory>

最满意答案

您必须使用prefInfo.setOnPreferenceClickListener

使用此代码....

public class SettingsPrefActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); Preference prefInfo = (Preference) findPreference("pref_info"); prefInfo.setOnPreferenceClickListener(clickListener); } Preference.OnPreferenceClickListener clickListener = new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Log.i("TAG", "Click in Pref"); dialogCustom(findViewById(android.R.id.content)); return true; } }; public void dialogCustom(View v) { Log.i("TAG","Dialog"); AlertDialog.Builder builder = new AlertDialog.Builder(this) .setTitle("INFORMATION"); builder.setNeutralButton("OK",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int which) { dialog.dismiss(); }}).show(); } }

You have to use prefInfo.setOnPreferenceClickListener

Use this code ....

public class SettingsPrefActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); Preference prefInfo = (Preference) findPreference("pref_info"); prefInfo.setOnPreferenceClickListener(clickListener); } Preference.OnPreferenceClickListener clickListener = new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Log.i("TAG", "Click in Pref"); dialogCustom(findViewById(android.R.id.content)); return true; } }; public void dialogCustom(View v) { Log.i("TAG","Dialog"); AlertDialog.Builder builder = new AlertDialog.Builder(this) .setTitle("INFORMATION"); builder.setNeutralButton("OK",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int which) { dialog.dismiss(); }}).show(); } }

更多推荐

本文发布于:2023-07-31 01:30:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1340384.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:设置为   ChangeListener   Android   Preference   Setting

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!