onBackPressed将用户带回主活动

时间:2013-08-29 23:16:23

标签: android

下面我有一个取消我的asynctask和ProgressDialog的方法。代码运行良好但是当你按下后退按钮时,它会停止所有内容,但它会让用户盯着一个无人居住的列表视图。所以这里的想法是,当用户点击后退按钮时,它会停止asynctask和ProgressDialog,而不是让他们看着一个未填充的列表视图,我希望它也将它们带回主活动。任何人都可以帮助我实现这个目标吗?

@Override
public void onBackPressed() 
{              
    /** If user Pressed BackButton While Running Asynctask
        this will close the ASynctask.
     */
    if (mTask != null && mTask.getStatus() != AsyncTask.Status.FINISHED)
    {
        mTask.cancel(true);
    }          
    super.onBackPressed();
}


@Override
protected void onDestroy() {
    // TODO Auto-generated method stub


/** If Activity is Destroyed While Running Asynctask
        this will close the ASynctask.   */

 if (mTask != null && mTask.getStatus() != AsyncTask.Status.FINISHED)
 {
    mTask.cancel(true);
  }  

    super.onDestroy();

}

@Override
protected void onPause() {
    // TODO Auto-generated method stub


 if (pDialog != null)
 {
     if(pDialog.isShowing())
     {
         pDialog.dismiss();
     }
        super.onPause();

  }  

}

3 个答案:

答案 0 :(得分:1)

finish();

之后添加super.onBackPressed();

答案 1 :(得分:0)

只需致电mTask.cancel(true);即可立即取消AsyncTask。您需要定期致电isCancelled()中的doInBackground(...) - 如果结果为true,您需要从doInBackground(...)返回。

在这种情况下,系统不会调用onPostExecute(...),而是调用onCancelled(),您可以致电finish()终止Activity

答案 2 :(得分:0)

使用这个: getActivity = for fragment,for activity use ActivityName.this

 Intent intent = new Intent(getActivity(), MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            startActivity(intent);
            finishActivity(false);