Android 无法解析用于初始化适配器的方法“getActivity()”

Android 无法解析用于初始化适配器的方法“getActivity()”,android,list,android-listview,adapter,android-arrayadapter,Android,List,Android Listview,Adapter,Android Arrayadapter,我正在创建一个自定义适配器MyAdapter并扩展ListView ListView以显示字符串数据数组。使用getActivity方法初始化MyAdapter时出错,如下所示: public class MainActivity extends AppCompatActivity { private ListView listView; private String[] data = {"Sanskrit", "Bhojpuri", "Newari", "Magar",

我正在创建一个自定义适配器MyAdapter并扩展ListView ListView以显示字符串数据数组。使用getActivity方法初始化MyAdapter时出错,如下所示:

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private String[] data = {"Sanskrit", "Bhojpuri", "Newari", "Magar",
            "Gurung", "English", "Maithili", "Tamil", "Hindi",
            "French", "German", "Russian", "Chinese"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listView = findViewById(R.id.list_view);

        MyAdapter adapter = new MyAdapter(getActivity(), data);
        listView.setAdapter(adapter);
    }
}

class MyAdapter extends ArrayAdapter {
    String[] data;

    public MyAdapter(Context context, int res, String[] data) {
        super(context,res);

        this.data = data;
    }

    @NonNull
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        LayoutInflater inflater = (LayoutInflater) getContext().
                getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View row = inflater.inflate(R.layout.custom_list_view, parent, false);

        TextView textView = row.findViewById(R.id.textView);

        textView.setText(data[position]);
        return row;
    }
}

如果有任何帮助,我们将不胜感激。

初始化MyAdapter时,您已经处于活动中。Activity类没有getActivity方法,因为它已经是Activity

使用以下命令:


初始化MyAdapter时,您已经在活动中。Activity类没有getActivity方法,因为它已经是Activity

使用以下命令:


getActivity方法返回活动的上下文

试试这个

MyAdapter adapter=新的MyAdapterYourActivityName

如果您想要当前的活动,那么只需

MyAdapter adapter = new MyAdapter(this,data);

getActivity方法返回活动的上下文

试试这个

MyAdapter adapter=新的MyAdapterYourActivityName

如果您想要当前的活动,那么只需

MyAdapter adapter = new MyAdapter(this,data);

我猜你是从网上复制的。 当使用片段引用宿主活动的上下文时,应该使用getActivity,但由于您处于活动中,因此只需要使用它来获取当前活动的上下文

MyAdapter adapter = new MyAdapter(this, data);

我猜你是从网上复制的。 当使用片段引用宿主活动的上下文时,应该使用getActivity,但由于您处于活动中,因此只需要使用它来获取当前活动的上下文

MyAdapter adapter = new MyAdapter(this, data);

您可以通过多种方式获取上下文:

MyAdapter adapter=新的MyAdaptergetBaseContext,数据; listView.setAdapteradapter; 或者,您可以使用应用程序上下文:

MyAdapter adapter=新的MyAdaptergetApplicationContext,数据; listView.setAdapteradapter; 或当前活动上下文:

MyAdapter adapter=新的MyAdapter此,数据; listView.setAdapteradapter;
您可以通过多种方式获取上下文:

MyAdapter adapter=新的MyAdaptergetBaseContext,数据; listView.setAdapteradapter; 或者,您可以使用应用程序上下文:

MyAdapter adapter=新的MyAdaptergetApplicationContext,数据; listView.setAdapteradapter; 或当前活动上下文:

MyAdapter adapter=新的MyAdapter此,数据; listView.setAdapteradapter;
这是解决办法

 MyAdapter adapter = new MyAdapter(getActivity(),data); 
    ...

在初始化MyAdapter实例、创建MyAdapter构造函数和调用super时,我传递了错误的参数


谢谢大家的回答

这是解决方案

 MyAdapter adapter = new MyAdapter(getActivity(),data); 
    ...

在初始化MyAdapter实例、创建MyAdapter构造函数和调用super时,我传递了错误的参数


谢谢大家的回答

请共享堆栈跟踪错误信息。@jeelvankhee没有堆栈跟踪。这是编译时错误。请不要在问题正文或标题中使用“已解决”。发布一个自我回答,或者接受其中一个帮助你解决问题的答案。@Shashanth我在答案中添加了答案。这是我的第一篇文章。所以我不知道。谢谢您的编辑。请共享堆栈跟踪错误信息。@jeelvankhee没有堆栈跟踪。这是编译时错误。请不要在问题正文或标题中使用“已解决”。发布一个自我回答,或者接受其中一个帮助你解决问题的答案。@Shashanth我在答案中添加了答案。这是我的第一篇文章。所以我不知道。谢谢你的编辑。
public MyAdapter(Context context,int resource,String[] data) {
super(context,resource,data);