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);
答案 0 :(得分:0)
ArrayAdapter
构造函数的第一个参数是Context
。 Fragment
不是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);