ProductFragment、lvおよびurlAddressをAsyncTask
に渡すにはどうすればよいですか。私はAppCompatActivity
に継承する場合は、エラーがないが、私はFragment
に継承する場合はラインフラグメントのAsyncTaskに文字列値を渡す方法
new Downloader(ProductFragment.this,urlAddress,lv).execute();
にエラー エラーがあるこれは私の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;
}
}
さらに多くの情報(スタックトレースなど)を提供できますか? – vallismortis
問題はあなたが間違っている文脈として断片を使用しているということです。新しいダウンローダを変更する(ProductFragment.this、urlAddress、lv).execute();新しいダウンローダ(getContext()、urlAddress、lv).execute(); –