Wie übergebe ich ProductFragment, lv und urlAddress an die AsyncTask
. Wenn ich zu AppCompatActivity
erben, kein Fehler vorhanden ist, aber wenn ich zu Fragment
erben gibt es einen Fehler Der Fehler in der LeitungWie Übergeben von Zeichenfolgenwert an die AsyncTask für ein Fragment
new Downloader(ProductFragment.this,urlAddress,lv).execute();
Das ist mein ProductFragment
import android.app.Fragment;
import android.app.ListFragment;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.wawi.wawireg.m_MySQL.Downloader;
public class ProductFragment extends Fragment {
final static String urlAddress = "http://**.**.**.**/**/****.php";
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.calendar_main, container, false);
Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton)view.findViewById(R.id.fab);
final ListView lv = (ListView)view.findViewById(R.id.lv);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Downloader(ProductFragment.this,urlAddress,lv).execute();
}
});
return view; }
}
This is my AsyncTask
public class Downloader extends AsyncTask<Void,Void,String> {
Context c;
String urlAddress;
ListView lv;
ProgressDialog pd;
public Downloader(Context c, String urlAddress, ListView lv) {
this.c = c;
this.urlAddress = urlAddress;
this.lv = lv; }
@Override
protected void onPreExecute() {
super.onPreExecute();
pd=new ProgressDialog(c);
pd.setTitle("Retrieve");
pd.setMessage("Retrieving...Please wait");
pd.show();
}
@Override
protected String doInBackground(Void... params) {
return downloadData();
}
@Override
protected void onPostExecute(String jsonData) {
super.onPostExecute(jsonData);
pd.dismiss();
if(jsonData==null)
{
Toast.makeText(c,"Unsuccessful, No data Retrieved",Toast.LENGTH_SHORT).show();
}else {
//PARSE
DataParser parser=new DataParser(c,jsonData,lv);
parser.execute();
}
}
private String downloadData()
{
HttpURLConnection con=Connector.connect(urlAddress);
if(con==null)
{
return null;
}
try
{
InputStream is=new BufferedInputStream(con.getInputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(is));
String line;
StringBuffer jsonData=new StringBuffer();
while ((line=br.readLine()) != null)
{
jsonData.append(line+"\n");
}
br.close();
is.close();
return jsonData.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
Können Sie weitere Informationen bereitstellen (z. B. eine Stapelprotokollierung)? – vallismortis
das Problem ist, verwenden Sie Fragment als Kontext, der falsch ist. neuen Downloader ändern (ProductFragment.this, urlAddress, lv) .execute(); zum neuen Downloader (getContext(), urlAddress, lv) .execute(); –