ユーザーがポップアップ メニューから ListPreference をクリックしたときにトラップする方法を教えてください。私のアプリでは、ユーザーは音量レベルを選択できます。ユーザーが中のリスト項目をクリックしたときに「中の音量が設定されました」などのリストをクリックした後、トーストを使用していくつかのフィードバックを表示したいと思います。
これが、私の設定アクティビティが現在どのように見えるかです。必要な追加のコーディングと、そのコーディングを配置する場所を示すことができますか?
ありがとう。
さすが、エマド
public class ClockSettings extends PreferenceActivity {
/*
* This is called when the class is created. It displays a Settings screen
* from the settings.xml file.
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*
* Read the settings definition from XML and show them in the current
* activity (screen).
*/
addPreferencesFromResource(R.xml.settings);
/*
* Hide this preference since it's used as a flag.
*/
CheckBoxPreference mCheckBoxPref = (CheckBoxPreference) findPreference("PhoneInUse");
PreferenceCategory mCategory = (PreferenceCategory) findPreference("Quarters");
mCategory.removePreference(mCheckBoxPref);
/*
* Get the preferences from the xml file to be used in click listeners.
*/
Preference settingMasterChimeToggle = (Preference) findPreference("MasterChimeToggle");
/*
* The user clicked on the setting for chiming on the hour.
*/
settingMasterChimeToggle
.setOnPreferenceClickListener(new OnPreferenceClickListener() {
public boolean onPreferenceClick(Preference preference) {
/*
* Get all the settings from the settings xml file.
*/
SharedPreferences clockSettings = PreferenceManager
.getDefaultSharedPreferences(ClockSettings.this);
/*
* Load these settings into a variable for testing.
*/
boolean booleanMasterChimeToggle = clockSettings
.getBoolean("MasterChimeToggle", false);
/*
* Adjust the other chime settings based on the state of
* this one.
*/
SharedPreferences.Editor prefEditor = clockSettings
.edit(); // Allow the settings to be changed.
if (booleanMasterChimeToggle == true) {
prefEditor.putBoolean("ChimeOnTheHour", true);
prefEditor.putBoolean("ChimeOn15Past", true);
prefEditor.putBoolean("ChimeOn30Past", true);
prefEditor.putBoolean("ChimeOn45Past", true);
Toast.makeText(ClockSettings.this,
"Full chiming has now been set.",
Toast.LENGTH_SHORT).show();
} else {
prefEditor.putBoolean("ChimeOnTheHour", false);
prefEditor.putBoolean("ChimeOn15Past", false);
prefEditor.putBoolean("ChimeOn30Past", false);
prefEditor.putBoolean("ChimeOn45Past", false);
Toast.makeText(ClockSettings.this,
"All chiming has now been disabled.",
Toast.LENGTH_SHORT).show();
}
prefEditor.commit(); // Save changes.
finishThisActivity();
return true;
}
});
}
/*
* Take user back to the home screen.
*/
private void finishThisActivity() {
this.finish();
}
}