1

現在、Android プロジェクトに取り組んでおり、コンテキストと AlertDialogs に問題があります。

フラグメントを拡張するクラスがあり、フラグメントCommonからコンテキストが渡された標準 Java クラスのインスタンスを作成します。クラスには、Common警告ダイアログを表示し、ユーザーがクリックしたものに基づいてブール値を返すコードがあります。

Activity を拡張する標準クラスでは、次を使用して Common クラスのインスタンスを作成できます。

Common common = new Common(this);

次に、次のコードを使用して、このクラス内で show alert dialog 関数を呼び出すことができます。

common.showYesNoDialog("This is my message", false);

上記のコードは、標準Activityクラスの場合は正常に機能します。私の問題はこれです。

フラグメントを拡張するクラスでthisは、共通クラスに渡すことができないため、代わりに次のコードを使用する必要があります。

Common common = new Common(getActivity().getApplicationContext());

通常どおり次のコードを使用します。

common.showYesNoDialog("This is my message", false);

上記の関数を呼び出すと、次のエラーが発生します。

FATAL EXCEPTION: main
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application.

ご協力いただきありがとうございます。

4

1 に答える 1

5

getActivity() は Context のサブクラスである Activity を返すため、getActivity()代わりに を使用する必要があります。getActivity().getApplicationContext()

于 2012-12-14T20:55:16.750 に答える