Как я могу получить контекст запущенной деятельности - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь показать настраиваемое диалоговое окно в неактивном классе, для которого мне нужен контекст выполнения переднего плана, который я начал с основного действия. я получаю это исключение при запуске

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 голосов
/ 29 октября 2018

Вы можете использовать конструктор для этой проблемы. Когда вы объявляете java-класс в своем java-классе MainActivity, добавьте к нему контекст.

Согласно вашему коду, вы добавили ReportEvent, просто добавьте контекст с этим. Как показано ниже:

public void Confirmation_dialog_V2(Context context,ReportEvent e){

//your code

}

Если вы непосредственно добавите Context в java-класс, то в Main Java-классе будет отображена ошибка, в которой вы объявите JavaClass.И когда вы добавите туда context, ошибка автоматически исчезнет.

После всего этого вы можете использовать этот контекст в любом месте этого Java-класса. Спасибо:)

0 голосов
/ 29 октября 2018
public void Confirmation_dialog_V2(ReportEvent e,Context context)
...