フィールドのをPreference
含むカスタムを作成しました。このボタンが押されたときに特定のアクションをトリガーしたいのですが、リスナーがクリック イベントを取得するのに問題があります。これが私が試したことです:Button
android:widgetLayout
@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 ファイルを次に示します。
Preferences_account.xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<Preference
android:key="sign_out"
android:persistent="false"
android:summary="account@email.com"
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" />
編集:ボタンのフィールドを使用して解決策を見つけましたが、可能であればandroid:onClick
使用して解決策を希望します。Preference