シングルトンクラスを実装して、すべてのメソッド/コンストラクタのパラメータとしてPassアクティビティを回避しました。"Token is null"コンテキスト/アクティビティのシングルトンを使用
public class ApplicationContext {
private static class Holder {
private static final ApplicationContext INSTANCE = new ApplicationContext();
}
private ApplicationContext() {}
private Context mContext;
public static ApplicationContext getInstance(){
return Holder.INSTANCE;
}
public Context getContext(){
return Holder.INSTANCE.mContext;
}
public void setContext(Context mContext){
Holder.INSTANCE.mContext = mContext;
}
}
そして、私の最初の活動で、私はコンテキストを設定します。
private void initializeObjects(){
ApplicationContext.getInstance().setContext(getApplicationContext());
}
私はProgressDialogにコンテキストを使用しようとすると問題が起こる:
@Override
protected void onPreExecute() {
pd = ProgressDialog.show(context, "", "Salvando Usuário");
}
エラーメッセージ:
07-05 20:29:46.413 30930-30930/com.test.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.test.app, PID: 30930
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
at android.view.ViewRootImpl.setView(ViewRootImpl.java:690)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:289)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
at android.app.Dialog.show(Dialog.java:311)
at android.app.ProgressDialog.show(ProgressDialog.java:116)
私は試したようなシングルトンを使用する良い練習ですか?どうしましたか?そうでない場合は、代わりにすべてのコールにコンテキスト/アクティビティを渡すのがよい方法ですか?
ありがとうございます。
「コンテキスト」とは何ですか?ここに掲載されたものは、これがどこに割り当てられているかを示していませ –