我试图在非活动类中显示一个自定义对话框,因为我需要从主要活动开始的前台运行活动的上下文。 我在运行
时收到此异常Unable to add window -- token null is not for an application
我确实使用了服务的上下文,但是它不起作用
非活动类别的鳕鱼
public void Confirmation_dialog_V2(ReportEvent e){
try{
Log.e("Bugreport","Confirmation");
Log.e("Bugreport","event: "+e.getEventDescription());
getRecording_service().stopRecording();
context= getRecording_service().getBaseContext();
context.setTheme(R.style.CustomTheme);
Log.e("Bugreport","get context");
if(context != null) {
Log.e("Bugreport","context not null");
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Log.e("Bugreport","in run block");
LovelyStandardDialog dialog =new LovelyStandardDialog(context, LovelyStandardDialog.ButtonLayout.VERTICAL);
dialog.setTopColorRes(R.color.indigo);
dialog.setButtonsColorRes(R.color.darkDeepOrange);
dialog.setIcon(R.drawable.ic_assignment_white_36dp);
dialog.setTitle("Confirm_interaction");
dialog.setMessage("Interaction:"+e.getEventDescription());
dialog.setPositiveButton("Confirm", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
dialog.setNegativeButton("NO", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
dialog.setNeutralButton("Contine", new View.OnClickListener() {
@Override
public void onClick(View view) {
}
});
Log.e("Bugreport","showing");
dialog.show();
}
});
}
}catch (Exception ex){ex.printStackTrace();}
}
所以我需要从前台开始的活动的上下文。
主要活动
Intent App = getPackageManager().getLaunchIntentForPackage(BugReport.getInstance().getPackageName());
App.addCategory(Intent.CATEGORY_LAUNCHER);
App.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
App.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(App);
答案 0 :(得分:0)
setTimeout
答案 1 :(得分:0)
您可以使用Constructor解决此问题。当您在MainActivity Java类中声明Java类时,将其添加上下文。
根据您的代码,您已添加ReportEvent,只需添加上下文,如下所示:
public void Confirmation_dialog_V2(Context context,ReportEvent e){
//your code
}
如果直接在Java类中添加Context,那么它将在声明JavaClass的Main Java类中显示错误。当在其中添加上下文时,错误将自动消失。
毕竟,您可以在Java类中的任何地方使用该上下文。谢谢:)