我收到此错误:
异常java.lang.IllegalStateException:Fragment Home {47bbf49}未附加到Activity
我相信当用户在progressDialog
结束前触摸屏幕时发生了。
有办法防止这种情况发生吗?也许在progresDialog上取消按钮?
public class Home extends Fragment {
String url = "http://www.someurl.com";
ProgressDialog mProgressDialog;
public static String somestring;
public static TextView sometextview;
public static Context context;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.report_cardrona, container, false);
sometextview=(TextView)v.findViewById(R.id.sometextview);
sometextview.setText(somestring);
if (counter==0) {
new SomeAsyncTask().execute();
}
return v;
}
// SomeAsyncTask AsyncTask
private class SomeAsyncTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(getActivity());
//mProgressDialog.setIndeterminate(false);
mProgressDialog.show();
mProgressDialog.setContentView(R.layout.custom_progressdialog);
mProgressDialog.setCancelable(true);
}
@Override
protected Void doInBackground(Void... params) {
try {
// Connect to the web site
Document document = Jsoup.connect(url)
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0")
.timeout(44000)
.get();
Elements somelement= document.select("someselector");
somestring="n/a";
if (somelement != null) somestring= somelement.text();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
sometextview.setText(somestring);
counter=counter+1;
mProgressDialog.dismiss();
}
}
}