DialogFragment にリスナーを設定しようとしていますが、null ポインター例外が引き続き発生します。
これは私の DialogFragment サブクラスです:
public static class TermsFragment extends DialogFragment {
TextView t;
private static String terms;
static TermsFragment newInstance(String termsCond) {
TermsFragment f = new TermsFragment();
terms = termsCond;
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getDialog().setCanceledOnTouchOutside(true);
View v = inflater.inflate(R.layout.termsandconditions, container, false);
getDialog().setTitle("Terms and Conditions");
t = (TextView) v.findViewById(R.id.termsText);
t.setText(terms);
return v;
}
}
そして、次のようにメインの SherlockFragment から呼び出しています。
TermsFragment newFragment = TermsFragment.newInstance(terms);
newFragment.show(getFragmentManager(), "dialog");
これは私のダイアログがうまく表示されます。次のようなボタンリスナーを追加しようとすると:
TermsFragment newFragment = TermsFragment.newInstance(terms);
Button cancel = (Button) newFragment.getDialog().findViewById(R.id.btnCancel);
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e(TAG, "Clicked");
}
});
または、次のような一般的な onCancel リスナー:
newFragment.getDialog().setOnCancelListener(new Dialog.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
showLoadingView(false);
}
});
ダイアログを表示する前に、null ポインター例外でアプリがクラッシュしました。
私は何を間違っていますか?