构造函数参数“this”从活动但从片段开始工作

时间:2016-07-25 03:13:11

标签: java android android-studio android-fragments

我使用了这样的构造函数:

public class CustomList extends ArrayAdapter<String> {
    private String[] ids;
    private String[] names;
    private String[] urls;
    private String[] fileTypes;
    private String[] date_times;
    private Activity context;    
public CustomList(Activity context, String[] ids, String[] names, String[] str_url,String[] fileType ,String[] dateTime){
            super(context, R.layout.list_view_layout, ids);
            this.context = context;
            this.ids = ids;
            this.names = names;
            this.urls = str_url;
            this.fileTypes = fileType;
            this.date_times = dateTime;
        }

能够像这样的主要活动使用这个类

CustomList cl = new CustomList(this, ParseJSON.ids,ParseJSON.names,ParseJSON.url,ParseJSON.file_type,ParseJSON.uploaded_at);

但每当我试图传递构造函数的第一个参数“this”错误消息显示。那么每当从片段

使用该calass时,第一个参数是什么

这实际上是我在片段

中所做的
if (arrayListPollingSite.size() > 0) {
                int pollingSiteCount = arrayListPollingSite.size();
                pollingSiteNameArray = new String[pollingSiteCount];
                HashMap<String, String> pollDataMap = new HashMap<String, String>();
                for (int i = 0; i < pollingSiteCount; i++) {
                    pollDataMap = arrayListPollingSite.get(i);
                    pollingSiteNameArray[i] = pollDataMap.get(i);
                   // this line showing error  
                    CustomList c1=new CustomList(getActivity(),pollDataMap.get(Constants.KEY_COUNTY_ID),pollDataMap.get(Constants.KEY_COUNTY_ID),pollDataMap.get(Constants.KEY_COUNTY_ID),pollDataMap.get(Constants.KEY_COUNTY_ID),pollDataMap.get(Constants.KEY_COUNTY_ID));
                }
               // listView.setAdapter(cl);

            }

3 个答案:

答案 0 :(得分:1)

&#39;这&#39;总是意味着当前的背景。 片段的上下文和活动的上下文是不同的。

因此您应该将活动的上下文提供给构造函数:try&#39; getActivity()&#39;

答案 1 :(得分:1)

您可以从Activity类调用this。 但是在片段中,您必须使用getActivity()调用包含此片段的活动,如下所示:

CustomList cl = new CustomList(getActivity(), ParseJSON.ids,
                ParseJSON.names,ParseJSON.url,ParseJSON.file_type,
                ParseJSON.uploaded_at);

Harunduet说: 我按照以下方式尝试过;

pollingSiteNameArray = new String[pollingSiteCount];
CustomList c1=new CustomList(getActivity(),pollingSiteNameArray[1],pollingSiteNameArray[2],pollingSiteNameArray[3],pollingSiteNameArray[4],pollingSiteNameArray[5]);

显示错误

Harunduet说:

 if (arrayListPollingSite.size() > 0) {
                int pollingSiteCount = arrayListPollingSite.size();
                pollingSiteNameArray = new String[pollingSiteCount];
                HashMap<String, String> pollDataMap = new HashMap<String, String>();
                for (int i = 0; i < pollingSiteCount; i++) {
                    pollDataMap = arrayListPollingSite.get(i);
                    pollingSiteNameArray[i] = pollDataMap.get(i);
                   // this line showing error  
                    CustomList c1=new CustomList(getActivity(),pollDataMap.get(Constants.KEY_COUNTY_ID),pollDataMap.get(Constants.KEY_COUNTY_ID),pollDataMap.get(Constants.KEY_COUNTY_ID),pollDataMap.get(Constants.KEY_COUNTY_ID),pollDataMap.get(Constants.KEY_COUNTY_ID));
                }
               // listView.setAdapter(cl);

            }

你在哪里执行此代码?尝试转移到片段中的onActivityCreated方法。

答案 2 :(得分:0)

试试这个

    time user B C
 1:    1    1 t 1
 2:    2    1 f 1
 3:    3    1 t 2
 4:    1    2 f 0
 5:    1    3 f 0
 6:    2    3 t 1
 7:    3    3 t 2
 8:    1    4 t 1 
 9:    2    4 t 2
10:    1    5 t 1