致命异常:令牌null无效;您的活动正在进行吗?

问题描述

我是Android开发的新手,我试图从java类调用AlertDialog,该java类构建适配器以提供RecyclerView的列表。此类,适配器类,不是活动类,出现错误

android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:798)
    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
    at android.app.Dialog.show(Dialog.java:329)
    at android.app.AlertDialog$Builder.show(AlertDialog.java:1125)
    at com.urcamadon.apexktruckracer.adapter.AdapterListaCampanhas$2.onClick(AdapterListaCampanhas.java:93)
    at android.view.View.performClick(View.java:6597)

我的代码

public void onBindViewHolder (@NonNull MyViewHolder holder,final int position) {

    final Campanha campanha = listaCampanhas.get(position);
    holder.nomeCampanha.setText(campanha.getNome_campanha());
    holder.listaJogadores.setText(campanha.getListaJogadores());
    holder.btEditarCampanha.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent(context,CampanhaCadastroActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.putExtra("campanhaSelecionada",listaCampanhas.get(position));

            context.startActivity(intent);
        }

    });
    holder.btExcluirCamapanha.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            AlertDialog.Builder dialog = new AlertDialog.Builder(context);
            dialog.setTitle("Confirmar exclusão");
            dialog.setMessage(context.getResources().getString(R.string.pergunta_exclusao) +
                   " " + campanha.getNome_campanha().toupperCase() + " ?");
            dialog.setPositiveButton("Sim",new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog,int which) {

                    CampanhaDAO campanhaDAO = new CampanhaDAO(context);

                    if(campanhaDAO.deletar(listaCampanhas.get(position))){
                        //ListarCampanhaActivity.carregarListaCampanhas();
                        Toast.makeText(context,"Campanha excluida com sucesso!",Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(context,"Erro ao excluir campanha!",Toast.LENGTH_SHORT).show();
                    }
                }
            });
            dialog.setNegativeButton("Não",null);
            dialog.create();
            dialog.show(); // The problem happens here.
        }
    });

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)