我已經構建了一個自定義Preference
,其中包含字段的Button
。我想在按下此按鈕時觸發特定操作,但我無法讓聽衆接聽點擊事件。以下是我已經試過:無法使用自定義首選項註冊點擊事件
@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");
}
}
當我點擊按鈕或偏好行的OnPreferenceClickListener
永遠不會觸發,並試圖找到按鈕視圖時onCreateView
實現拋出一個NullPointerException
。
如何監聽點擊此按鈕的時間?作爲參考,以下是相關的XML文件:
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" />
編輯:我發現使用的的領域的解決方案按鈕,但如果可能的話,我仍然希望使用Preference
的解決方案。
與我試過的有什麼不同? – 2012-07-18 15:26:36