誰もこの問題を解決しようとしている理由はわかりません。他のアクティビティから警告ダイアログを表示する際にエラーが発生する(アクティビティが破壊されないように)
ここで私は完全に台無しです。私はアンドロイドアプリを作成していますが、現在3つのアクティビティの操作に問題があります。
私はActivity1、Activity2とActivity3を持っています。
アクティビティ1:AsyncTask(background)
のデータを取得し、listViewを表示します。リストビューアイテムにonClick
アクションのalertDialogを表示しています。
私はActivity2new NameAsyncTask(Activity1.this).execute();
としてAsyncTask
クラスを呼んでいるAsyncTask
public NameAsyncTask(Context cxt) {
context = cxt;
pDialog = new ProgressDialog(context);
adapter = new SimpleAdapter(
context, dataList,
R.layout.list_incident, new String[]{"refName", "sub", "status", "categ", "createTime", "organisation"},
new int[]{R.id.in_name, R.id.sub, R.id.status,R.id.categ_show, R.id.created_time_show, R.id.cust_name});
binder = new SimpleAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Object data, String textRepresentation) {
if (view.equals((TextView)view.findViewById(R.id.status))) {
statusText = (TextView)view.findViewById(R.id.status);
if (data.equals("Unresolved"))
statusText.setTextColor(context.getResources().getColor(R.color.red));
else if (data.equals("In Progress"))
statusText.setTextColor(context.getResources().getColor(R.color.yellow));
}
return false;
}
};
}
でコンストラクタを使用しています。それをクリックすると、リストビューの項目の詳細を示します。最後にfinish()
をActivity3
に入れるように呼び出します。
Activity3:アイテムの詳細を更新し1st activity
ので、その項目をfirst activity
に削除され、リストビューが更新されますnew NameAsyncTask(Activity3.this).execute();
としてのAsyncTask(background)
を呼び出します。 finish()
と呼びます(2回目のアクティビティは既に終了しているため)。再び私はListView項目をクリックした場合
さて問題は、ある、それはまた、distroyedなっているActivity1
かどうか、
final AlertDialog.Builder alertDialog = new AlertDialog.Builder(Activity1.this);
わからないこの行に
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:149)
at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:157)
at android.support.v7.app.AlertDialog.resolveDialogTheme(AlertDialog.java:113)
at android.support.v7.app.AlertDialog$Builder.<init>(AlertDialog.java:291)
at com.lavazza.IncidentServiceActivity$GetPendingIncidents$2.onItemClick(IncidentServiceActivity.java:267)
at android.widget.AdapterView.performItemClick(AdapterView.java:310)
at android.widget.AbsListView.performItemClick(AbsListView.java:1156)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3121)
at android.widget.AbsListView.onTouchUp(AbsListView.java:4048)
at android.widget.AbsListView.onTouchEvent(AbsListView.java:3807)
at android.view.View.dispatchTouchEvent(View.java:10023)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2626)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2307)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2632)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2321)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:413)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1808)
としてエラーがスローされます。
リストビューの場合はadapter
、アクティビティの両方のコンテキストの場合はbinder
が動作します。しかしalertDialog
では動作しません。私がfinal AlertDialog.Builder alertDialog = new AlertDialog.Builder(context);
をコンストラクタに宣言したとき。 アクティビティ1で正常に動作します。
私はAsyncTask
Activity1Obj.new GetPendingIncidents(Activity3.this).execute();
とActivity3から、それはここで私は信じて自動的に破棄されActivity1
android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:679)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
at android.app.Dialog.show(Dialog.java:322)
at com.lavazza.IncidentServiceActivity$GetPendingIncidents$2.onItemClick(IncidentServiceActivity.java:338)
としてエラーがスロー実行した場合。私が間違っているなら私を訂正してください。
Iはすでに
を試み - >getParent
、getApplicationContext
、getBaseContext
としてalertDialogの宣言でcontext
を変更します。何も働かなかった。
返信後にalertDialog
と表示されました。Activity3
です。
私を助ける人はいますか?それでも私はこれを実行する方法を考えています。
ここで 'MyApplication'は' app name'を参照していますか? – Shambhu
私のために働かなかった。 – Shambhu
'MyApplication'はメインアクティビティと似ています。マニフェストで記述し、 'Application'を拡張するクラスを作成する必要があります。 – dralexnumber