他のクラスを拡張しないパブリッククラス内で、私はいくつかの評価作業を行っています。何かをユーザーに伝える必要がある場合は、ダイアログを返したいと思います。
AsyncTaskを使用して、メインUIからこのクラスのインスタンスのメソッドを実行しています。
private OnlineActivities onlineActivities = new OnlineActivities();
new DoOnlineActivity().execute(getApplicationContext());
private class DoOnlineStuff extends AsyncTask<Context, Integer, Dialog> {
@Override
protected Dialog doInBackground(Context... params) {
return onlineActivities.start(params[0]);
}
@Override
protected void onProgressUpdate(Integer... progress) {
Log.v(RuntimeVars.getMyName(), "AsyncOnlineTask in progess");
}
@Override
protected void onPostExecute(Dialog result) {
if (result != null)
result.show();
}
}
ここで、のpublic Dialog start()
メソッドはOnlineActivities.java
、そのパラメーターを介して割り当てられたコンテキストを使用してダイアログを作成します。
ダイアログがに戻るとonPostExecute
、次の例外が発生します
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): FATAL EXCEPTION: main
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at android.view.ViewRoot.setView(ViewRoot.java:509)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at android.app.Dialog.show(Dialog.java:241)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at info.myProject.messaging.ConversationList$DoOnlineActivity.onPostExecute(ConversationList.java:245)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at info.myProject.messaging.ConversationList$DoOnlineActivity.onPostExecute(ConversationList.java:1)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at android.os.AsyncTask.finish(AsyncTask.java:417)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at android.os.AsyncTask.access$300(AsyncTask.java:127)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at android.os.Handler.dispatchMessage(Handler.java:99)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at android.os.Looper.loop(Looper.java:123)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at android.app.ActivityThread.main(ActivityThread.java:4627)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at java.lang.reflect.Method.invokeNative(Native Method)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at java.lang.reflect.Method.invoke(Method.java:521)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-14 23:53:43.303: ERROR/AndroidRuntime(1320): at dalvik.system.NativeStart.main(Native Method)
このような文脈は使えないと思います。しかし、代替案は何でしょうか?いくつかの一般的なダイアログでさえ、私がいつもしなければならないいくつかの基本的なことをどのようにアウトソーシングできますか?
代わりにカスタムインテントを使用する必要がありますか?