EditInformation erstreckt sich auf Fragment. Ich erhalte einen Fehler in dieser Zeile
loading = ProgressDialog.show(EditInformation.this,"Fetching...","Wait...",false,false);
, falscher 1. Argumenttyp.
public void RetrieveInformation(final String id)
{
class GetEmployee extends AsyncTask<Void,Void,String> {
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(EditInformation.this,"Fetching...","Wait...",false,false);
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
showEmployee(s);
}
@Override
protected String doInBackground(Void... params) {
RequestHandler rh = new RequestHandler();
String s = rh.sendGetRequestParam(Config.RETRIEVE_INFORMATION,id);
return s;
}
}
GetEmployee ge = new GetEmployee();
ge.execute();
}
Fehler
Error:(124, 62) error: incompatible types: EditInformation cannot be converted to Context
Ich wechsle zu EditInformation.getActivity (), erhalte aber den Fehler non-static method
2 Antworten
Veränderung
loading = ProgressDialog.show(EditInformation.this,"Fetching...","Wait...",false,false);
Zu
loading = ProgressDialog.show(getActivity(),"Fetching...","Wait...",false,false);
Da Sie sich bereits in einem Fragment
Kontext befinden, wird getActivity()
den Trick ausführen.
Da Sie sich in einem Fragment befinden, erhalten Sie keinen Kontext, wenn Sie YourFragment.this sagen. Um dies zu erreichen, können Sie die Methode getActivity () verwenden, die den Kontext der Containeraktivität zurückgibt, und Sie können auch getActivity () sagen. GetApplicationContext () funktionieren beide einwandfrei.
Neue Fragen
java
Java ist eine Programmiersprache auf hoher Ebene. Verwenden Sie dieses Tag, wenn Sie Probleme haben, die Sprache selbst zu verwenden oder zu verstehen. Dieses Tag wird selten alleine verwendet und wird am häufigsten in Verbindung mit [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] und [maven] verwendet.