Java android应用程序中的对话框。android.view.WindowsManager$BadTokenException
我试图创建一个对话框,但当我试图运行代码时它崩溃了。我想在我的片段中的listview中选择一个项目时运行它,现在我只想尝试显示对话框而不传递任何内容 以下是我的java代码:Java android应用程序中的对话框。android.view.WindowsManager$BadTokenException,java,android,Java,Android,我试图创建一个对话框,但当我试图运行代码时它崩溃了。我想在我的片段中的listview中选择一个项目时运行它,现在我只想尝试显示对话框而不传递任何内容 以下是我的java代码: myInfoList.setAdapter(new CustomAdapter(details , getActivity().getApplicationContext())); myInfoList.setOnItemClickListener(new OnItemClickList
myInfoList.setAdapter(new CustomAdapter(details , getActivity().getApplicationContext()));
myInfoList.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> a, View v, int position, long id) {
//System.out.println("Name: "+details.get(position).getSub();
//String s = details.get(position).getDescription();
final Dialog dialog = new Dialog(getActivity().getApplicationContext());
dialog.setContentView(R.layout.purchase);
dialog.setTitle("Title");
Button dialogButton = (Button) dialog.findViewById(R.id.dialogButtonOK);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
}
});
更改以下行:
final Dialog dialog = new Dialog(getActivity().getApplicationContext());
致:
对话框不能与应用程序上下文一起实例化,因为这两个对话框具有不同的生命周期:对话框的生命周期绑定到宿主活动的生命周期。在这里进行简单的搜索可能也会发现这一点
为了解释不同的背景
口味以及何时(不)使用哪种口味,我建议通读本主题。它还包含一个方便的表格供参考。只需更改此项即可
final Dialog dialog = new Dialog(getActivity());
而不是这个
final Dialog dialog = new Dialog(getActivity().getApplicationContext());
&当你传递上下文时,请记住
在片段中使用getActivity()
在ActivityYourActivity中。此
原因是无法通过非活动的上下文显示应用程序窗口/对话框。尝试传递有效的活动引用。不太可能。如果getActivity()
返回null
,则对其调用.getApplicationContext()
的任何尝试都将导致NullPointerException。你的strack痕迹不是这么说的。。。
final Dialog dialog = new Dialog(getActivity());
final Dialog dialog = new Dialog(getActivity().getApplicationContext());