Ich habe eine benutzerdefinierte Preference
erstellt, die ein Button
für das Feld android:widgetLayout
enthält. Ich möchte eine bestimmte Aktion auslösen, wenn diese Schaltfläche gedrückt wird, aber ich habe Probleme, einen Listener zum Aufnehmen von Klickereignissen zu bekommen. Hier ist, was ich versucht habe:Click-Ereignis kann nicht mit einer benutzerdefinierten Einstellung registriert werden.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference_account);
Preference signOutPreference = findPreference("sign_out");
signOutPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
Log.i(TAG, "Click");
return false;
}
});
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = super.onCreateView(inflater, container, savedInstanceState);
root.findViewById(R.id.preference_signOut_Button).setOnClickListener(new OnSignOutClickListener());
return root;
}
private class OnSignOutClickListener implements OnClickListener {
@Override
public void onClick(View v) {
Log.i(TAG, "Click");
}
}
Die OnPreferenceClickListener
wird nie ausgelöst, wenn ich die Taste oder die Präferenz Zeile klicken und die onCreateView
Implementierung wirft ein NullPointerException
bei dem Versuch, auf die Schaltfläche Ansicht zu finden.
Wie höre ich zu, wenn diese Schaltfläche angeklickt wird? Als Referenz sind hier die entsprechenden XML-Dateien:
preference_account.xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<Preference
android:key="sign_out"
android:persistent="false"
android:summary="[email protected]"
android:title="Signed in as:"
android:widgetLayout="@layout/sign_out_button" />
</PreferenceScreen>
sign_out_button.xml
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/preference_signOut_Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sign Out" />
Edit: Ich habe eine Lösung mit dem Bereich der gefunden Knopf, aber ich möchte immer noch eine Lösung mit Preference
wenn möglich.
Wie ist das anders als das, was ich ausprobiert habe? –