我有标题中提到的问题。我只想显示电话内部存储中的txt文件,以便在单击时进行处理。我的问题是它无法识别ListView。我尝试了许多不同的解决方案,但是没有用,有人知道吗?下面是类中的代码。 谢谢
public class Tab3 extends ListFragment {
private ListView listView;
private String fileNames[];
View mView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listView = getActivity().findViewById(R.id.listView);
ArrayList<File> files = readFiles(Environment.getExternalStorageDirectory());
fileNames = new String[files.size()];
for (int i = 0; i < files.size(); ++i) {
fileNames[i] = files.get(i).getName().toString().replace(".txt", "");
}
ListAdapter listAdapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, fileNames);
setListAdapter(listAdapter);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mView = inflater.inflate(R.layout.fragment_tab3, container, false);
return mView;
}
private ArrayList<File> readFiles(File root) {
ArrayList<File> arrayList = new ArrayList<File>();
File files[] = root.listFiles();
for (File file : files) {
if (file.isDirectory()) {
arrayList.addAll(readFiles(file));
} else {
if (file.getName().endsWith(".txt")) {
arrayList.add(file);
}
}
}
return arrayList;
}
}
更新
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
Fragment fragment=null;
switch (position){
case 0:
Tab1Values tab1=new Tab1Values();
return tab1;
case 1:
Tab2Map tab2=new Tab2Map();
return tab2;
case 2:
Tab3 tab3=new Tab3();
return tab3;
}
return fragment;
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
}
答案 0 :(得分:0)
我认为应该是listView.setAdapter(listAdapter);
答案 1 :(得分:0)
我认为我有问题。 onCreateView()
在onCreate()
之后被调用。因此,基本上,您在扩大布局之前使用findViewById()
。将onCreate()
中的代码移至onCreateView()
。它将解决问题。
编辑:还将getActivity().findViewById
替换为mView.findViewById()