2017-01-04 3 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 = новый ProgressDialog (контекст);

его работы.

2

Если асинтеза не является вложенным классом активности, вам необходимо установить/добавить контекст в качестве параметра в конструктор.

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 является частью деятельности.
Или, если асинтеза является вложенным классом активности, то вы можете делать то, что хотите. Подробнее вы можете прочитать в следующем примере:
ProgressDialog and AsyncTask

0

Ошибка = com.blablablabla.AddStudentActivity не класс вшита.

выше ошибка возникает, когда вы пытаетесь использовать контекст активности в другом отдельном классе. Это должно даже повредить вам, когда оно даст вам утечки памяти.

pDialog = новый ProgressDialog (контекст);

Смежные вопросы