根据logcat
输出,应用在创建Dialog
时崩溃。我尝试将变量reportAlertDialog
更改为AlertDialog
类型但我发现,某些功能/属性不可用,例如setcontentView
,但是当变量属于类型时可用Dialog
。无论如何,应用程序此时崩溃,logcat
输出相当难以理解。有什么建议吗?
JavaCode:
private void report(Bundle thisActivityBundle) {
...
...
if ( (reportAlertDialog != null) && (reportAlertDialog.isShowing()) ) {
reportAlertDialog.cancel();
Log.i(CURRENT_ACTIVITY, "@report(): reportAlertDialogue Was Showing And Now Is Canceled");
}
String sortedKeys[] = {LOC_NAME_KEY, LOC_LAT_KEY, LOC_LNG_KEY, LOC_TIME_KEY, LOC_DATE_KEY, IMG_TITLE_KEY, IMG_PATH_KEY};
String bundleVals [] = new String[sortedKeys.length];
for (int i=0; i<sortedKeys.length; i++) {
if (thisActivityBundle.containsKey(sortedKeys[i])) {
bundleVals[i] = thisActivityBundle.getString(sortedKeys[0]).toString();
}else {
bundleVals[i] = "NULL";
}
}
reportAlertDialog = new Dialog(getApplicationContext());
LayoutInflater reportAlertDialogLayoutInflater = LayoutInflater.from(getApplicationContext());
View reportAlertDialogInflatedView = reportAlertDialogLayoutInflater.inflate(R.layout.report_dialog, null);
reportAlertDialog.setContentView(reportAlertDialogInflatedView);
int [] viewsRefsIds = {R.id.reportLocNameValue, R.id.reportLocLatValue, R.id.reportLocLngValue, R.id.reportTimeValue,
R.id.reportDateValue, R.id.reportImgTitleValue, R.id.reportImgPathValue
};
TextView [] viewsVars = new TextView[viewsRefsIds.length];
TextView reportAlertDialogMSG = (TextView) reportAlertDialog.findViewById(R.id.reportDialogMessageID);
reportAlertDialogMSG.setText(REPORT_ALERT_DIALOG_MSG);
for (int i=0; i<bundleVals.length; i++) {
viewsVars[i] = (TextView) reportAlertDialog.findViewById(viewsRefsIds[i]);
viewsVars[i].setText(bundleVals[i]);
}
reportAlertDialog.show();
}
logcat的:
05-24 08:06:01.317: E/AndroidRuntime(2396): FATAL EXCEPTION: main
05-24 08:06:01.317:E / AndroidRuntime(2396):处理:com.example.meetingpointlocator_03,PID:2396 05-24 08:06:01.317:E / AndroidRuntime(2396):android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null不适用于应用程序 05-24 08:06:01.317:E / AndroidRuntime(2396):在android.view.ViewRootImpl.setView(ViewRootImpl.java:540) 05-24 08:06:01.317:E / AndroidRuntime(2396):在android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:259) 05-24 08:06:01.317:E / AndroidRuntime(2396):在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69) 05-24 08:06:01.317:E / AndroidRuntime(2396):在android.app.Dialog.show(Dialog.java:286) 05-24 08:06:01.317:E / AndroidRuntime(2396):at com.example.meetingpointlocator_03.MeetingPointFix $ 4.report(MeetingPointFix.java:307) 05-24 08:06:01.317:E / AndroidRuntime(2396):at com.example.meetingpointlocator_03.MeetingPointFix $ 4.onClick(MeetingPointFix.java:240) 05-24 08:06:01.317:E / AndroidRuntime(2396):at com.android.internal.app.AlertController $ ButtonHandler.handleMessage(AlertController.java:166) 05-24 08:06:01.317:E / AndroidRuntime(2396):在android.os.Handler.dispatchMessage(Handler.java:102) 05-24 08:06:01.317:E / AndroidRuntime(2396):在android.os.Looper.loop(Looper.java:136) 05-24 08:06:01.317:E / AndroidRuntime(2396):在android.app.ActivityThread.main(ActivityThread.java:5017) 05-24 08:06:01.317:E / AndroidRuntime(2396):at java.lang.reflect.Method.invokeNative(Native Method) 05-24 08:06:01.317:E / AndroidRuntime(2396):at java.lang.reflect.Method.invoke(Method.java:515) 05-24 08:06:01.317:E / AndroidRuntime(2396):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:779) 05-24 08:06:01.317:E / AndroidRuntime(2396):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 05-24 08:06:01.317:E / AndroidRuntime(2396):at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:0)
尝试将对话框的参数设置为此活动
reportAlertDialog = new Dialog(YourActivityName.this);
我认为它会奏效。