我有一个AlertDialog.Builder
,如果用户没有网络连接,则会在用户首次打开应用时触发。 AlertDialogh
作为NeutralButton
一次点击就会跳转到startActivity
。
我收到leaked window
错误。由于我无法.dismiss()
或.cancel()
AlertDialog
,因此无法确定如何解决此问题。
还有其他方法可以显示此警报吗?
这是在onCreate
if(isNetworkAvailable()){
checkVersion();
}else{
AlertDialog.Builder warning = new AlertDialog.Builder(this);
warning.setCancelable(false);
warning.setTitle("Network Connection Not Established");
warning.setMessage("Data will not be Synchronized. To have data Synchronized close the application and connect to WiFi or Cell Sevice Provider then Reopen.");
warning.setNeutralButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
findView();
}
});
warning.show();
}
checkVersion()
没有问题,findView()
提出了错误
private void findView(){
locationId = datasource.selectSettingsLocation();
if(locationId != 0){
Intent intent = new Intent(Startup.this, Return.class);
startActivity(intent);
this.finish();
} else {
Intent intent = new Intent(Startup.this, Main.class);
startActivity(intent);
this.finish();
}
}
其他是在这种情况下被触发的内容Intent intent = new Intent(Startup.this, Main.class);
答案 0 :(得分:2)
我得到了泄露的窗口错误
您没有发布相关代码,但是在进入下一个活动之前需要在Dialog上调用dismiss()
- 在那个时间当前活动的上下文将 null 这就是你得到这种例外的原因。
所以在你的情况下,你可以这样做:
final AlertDialog.Builder warning = new AlertDialog.Builder(this);
...
public void onClick(DialogInterface arg0, int arg1) {
warning.dismiss();
findView();
}
只需要将Dialog作为最终字段,以便能够在匿名类的方法中使用它。
答案 1 :(得分:0)
我猜你有错误"上下文。请粘贴您的代码。如果您在片段中使用代码,请使用AlterDialog.Builder builder = new AlertDialog.Builder(getActivity());
否则请发布您的编码。