将活动转换为片段它会在阵列适配器上显示一些错误

时间:2018-04-08 13:04:33

标签: android

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btnScan = (Button)findViewById(R.id.scan);
    listViewIp = (ListView)findViewById(R.id.listviewip);
    bar = (ProgressBar) findViewById(R.id.pbar);
    bar.setVisibility(View.INVISIBLE);

    ipList = new ArrayList();
    adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, android.R.id.text1, ipList);
    listViewIp.setAdapter(adapter);

    btnScan.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new ScanIpTask().execute();
        }
    });

将其转换为片段

ArrayList ipList;     ArrayAdapter适配器;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_scan_ip, container, false);

    btnScan = (Button)rootView.findViewById(R.id.scan);
    listViewIp = (ListView)rootView.findViewById(R.id.listviewip);
    bar = (ProgressBar) rootView.findViewById(R.id.pbar);
    bar.setVisibility(View.INVISIBLE);

    ipList = new ArrayList();
    adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, android.R.id.text1, ipList);
    listViewIp.setAdapter(adapter);

    btnScan.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new ScanIpTask().execute();
        }
    });


    return rootView;
}

它显示此行中的错误

adapter = new ArrayAdapter(这个,                 android.R.layout.simple_list_item_1,android.R.id.text1,ipList);

2 个答案:

答案 0 :(得分:0)

ArrayAdapter构造函数的第一个参数是ContextFragment  不是Context的孩子。您需要传递父Context的{​​{1}}。

  

ArrayAdapter(Context context,int resource,int textViewResourceId)

使用Activity获取父活动的上下文。

getActivity()
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, ipList); listViewIp.setAdapter(adapter); 内的{p> getActivity()可以返回null,有时会导致片段尚未附加。要清除概念,请阅读This post或类似内容。

答案 1 :(得分:0)

替换代码
adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, ipList);