2017-01-04 116 views
1
class AddStudent extends AsyncTask<String, Void, ResultData> { 

private ProgressDialog pDialog; 

@Override 
protected void onPreExecute() { 
    super.onPreExecute(); 
    pDialog = new ProgressDialog(AddStudentActivity.this); 
    pDialog.setMessage("Adding Product.."); 
    pDialog.setIndeterminate(false); 
    pDialog.setCancelable(true); 
    pDialog.show(); 
} 

private Context context; 
    //CHANGE HERE....ADD PARAMATER 

TextView tv_msg; 
public AddStudent(Context context, TextView tv_msg) { 
    this.context = context; 
    this.tv_msg = tv_msg; 

} 

我在(AddStudentActivity.this);的AsyncTask onPreExecute新progressdialog

誤差的誤差= com.blablablabla.AddStudentActivity不是一個封閉類。

什麼問題?
我該如何解決這個問題?

+0

不能使用還沒有被創建活動的背景下.. – akash93

回答

1

您還沒有發佈您的整個代碼,所以這是一個有點炒作,但這裏有雲:

最有可能你已經創建了您的AddStudent的AsyncTask一個單獨的文件,或者把你的AddStudentActivity類外。您需要使AddStudent內部類爲AddStudentActivity才能夠使用AddStudentActivity.this

此處瞭解詳情:Android: AsyncTask recommendations: private class or public class?

1

pDialog =新ProgressDialog(AddStudentActivity.this);

更改爲

pDialog = new ProgressDialog(context);

工作。

2

如果的AsyncTask不是一個嵌套類,你需要設置/添加上下文作爲參數的構造活動的。

class AddStudent extends AsyncTask<String, Void, ResultData> { 

    private ProgressDialog pDialog; 
    private Context context; 

    public AddStudent(Context context) { 
     this.context = context; 
    } 

    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(context) ; 
     pDialog.setMessage("Adding Product.."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 
} 

的TextView它是活動的一部分。
或者,如果asynctask是一個活動的嵌套類,那麼你可以做你想做的。更可以在下面的例子如下:
ProgressDialog and AsyncTask

0

錯誤= com.blablablabla.AddStudentActivity不是一個封閉類。

上述錯誤出現,只要你嘗試使用Activity上下文的其他單獨的類。 這會給你帶來內存泄漏,甚至會對你有害。

pDialog =新ProgressDialog(上下文);