2017-01-04 1 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; 

} 

Ich habe einen Fehler in (AddStudentActivity.this);AsyncTask OnPreExecute neue progressdialog

Fehler = com.blablablabla.AddStudentActivity ist keine einschließenden Klasse.

Was ist das Problem ?.
Wie kann ich das beheben ?.

+0

Sie können den Kontext einer Aktivität, die noch nicht erstellt wurde, nicht verwenden. – akash93

Antwort

1

Sie haben nicht den ganzen Code geschrieben, so ist dies ein bisschen Spekulation, aber hier geht:

Wahrscheinlich haben Sie eine separate Datei für Ihre AddStudent AsyncTask erstellt oder außerhalb Ihrer AddStudentActivity Klasse setzen es. Sie müssen AddStudent eine innere Klasse von AddStudentActivity machen, um AddStudentActivity.this verwenden zu können.

Mehr Infos hier: Android: AsyncTask recommendations: private class or public class?

1

pDialog = new ProgressDialog (AddStudentActivity.this);

Änderung

pDialog = new ProgressDialog (Kontext);

seine Arbeit.

2

Wenn asynctask keine verschachtelte Klasse einer Aktivität ist, müssen Sie den Kontext als Parameter für den Konstruktor festlegen/hinzufügen.

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 ist es die Aktivität teil.
Oder, wenn die asynctask eine verschachtelte Klasse einer Aktivität ist, dann können Sie tun, was Sie wollen. Mehr können Sie in dem unten stehenden Beispiel lesen:
ProgressDialog and AsyncTask

0

Fehler = com.blablablabla.AddStudentActivity keine einschließenden Klasse ist.

Der obige Fehler tritt immer dann auf, wenn Sie versuchen, den Aktivitätskontext in einer anderen separaten Klasse zu verwenden. Dies sollte sogar schädlich für Sie sein, wenn es Ihnen Speicherlecks gibt.

pDialog = neuer ProgressDialog (Kontext);

Verwandte Themen