如何解决片段未附加到Activity

时间:2016-07-09 19:28:28

标签: java android android-fragments android-asynctask progressdialog

我收到此错误:

  

异常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();
    }
  }
}

0 个答案:

没有答案