我如何获得开始活动的背景

时间:2018-10-28 21:07:13

标签: java android android-context android-dialog window-managers

我试图在非活动类中显示一个自定义对话框,因为我需要从主要活动开始的前台运行活动的上下文。 我在运行

时收到此异常
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);

2 个答案:

答案 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类中的任何地方使用该上下文。谢谢:)