问题描述
我是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 (将#修改为@)