使用上下文时不兼容的类型

Incompatible Types While using Context

我以前用它来从数据库下载数据。现在我试图在选项卡 Activity 中的片段中使用相同的内容,但它在上下文中显示错误。我尝试了很多但我找不到任何解决方案我希望任何人都可以帮助我。这是发生错误的屏幕截图:

片段

package com.custardpine.v_guide.movie;

import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

import com.custardpine.v_guide.R;

public class Trending extends Fragment{

final String url = "http://192.168.43.51/proj/trending.php";
ListView lv;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_movie_trending, container, false);
    lv = (ListView) rootView.findViewById(R.id.mves_list);
    DownloaderMovies d= new DownloaderMovies(Trending.this,url,lv);
    d.execute();
    return rootView;
}
}

下载器

package com.custardpine.v_guide.movie;

import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.ListView;
import android.widget.Toast;


import com.custardpine.v_guide.bus.Connector;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;

public class DownloaderMovies extends AsyncTask<Void,Void,String> {

    Context c;
    String url;
    ListView lv;
    ProgressDialog pd;

public DownloaderMovies(Trending c, String url, ListView lv) {

    this.c = c;          <--Error Occuring Here-->
    this.url = url;
    this.lv = lv;

}


@Override
protected void onPreExecute() {
    super.onPreExecute();
    pd = new ProgressDialog(c);
    pd.setTitle("Downloading..");
    pd.setMessage("Please wait.....");
    pd.show();
    }
 @Override
 protected String doInBackground(Void... voids) {

    return downloadData();
    }

@Override
protected void onPostExecute(String jsonData) {
    super.onPostExecute(jsonData);
    pd.dismiss();
    if (jsonData==null){

    Toast.makeText(c,"Failed to Download",Toast.LENGTH_SHORT).show();
    }else {
    ParseMovies p= new ParseMovies(c,jsonData,lv);
    p.execute();
    }
    }
private String downloadData()
    {

    HttpURLConnection con = Connector.connect(url);
    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;
    }
    }

您收到此错误是因为(与 Activity 不同)片段不是上下文。但是在您的片段中,您可以使用 getContext() 来获取您需要的上下文。 所以而不是

DownloaderMovies d= new DownloaderMovies(Trending.this,url,lv);

你必须使用

DownloaderMovies d= new DownloaderMovies(getContext(),url,lv);

并且还将 DownloaderMovies 的构造函数更改为

public DownloaderMovies(Context c, String url, ListView lv) {
    // ...
}