Когда я пытаюсь использовать bartek Pdfviewer для загрузки через файл, он продолжает выдавать следующую ошибку. Я не уверен, почему он говорит, что это ссылка на нулевой объект, когда pdfFile = / storage / emulated / 0 / Download / Tennis SG.pdf, как показано ниже, эта ошибка через журнал
Могу я узнать, что я делаю не так?
java.lang.NullPointerException: Attempt to invoke virtual method 'com.github.barteksc.pdfviewer.PDFView$Configurator com.github.barteksc.pdfviewer.PDFView.fromFile(java.io.File)' on a null object reference
at sg.edu.tp.test2.DownloadFragment$1.onItemClick(DownloadFragment.java:66)
Журнал для Log.d ("TAG", "onItemClick:" + pdfFile);
D/TAG: onItemClick: /storage/emulated/0/Download/Tennis SG.pdf
public class DownloadFragment extends Fragment {
private ListView listView;
private View view;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_download, container, false);
listView = view.findViewById(R.id.download_listview);
loadData();
return view;
}
private void loadData(){
File downloadFolder = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File[] files = downloadFolder.listFiles();
final List<String> data = new ArrayList<>();
for (int i =0; i<files.length; i++){
String filename = files[i].getAbsolutePath();
if(filename.endsWith(".pdf")){
data.add(filename);
Log.d("TAG", "loadData: " +data);
}
}
ArrayAdapter adapter = new ArrayAdapter(getContext(),
android.R.layout.simple_list_item_1, data);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
listView.setVisibility(View.GONE);
PDFView pdfView = view.findViewById(R.id.pdfView);
pdfView.setVisibility(View.VISIBLE);
File pdfFile = new File(data.get(position));
Log.d("TAG", "onItemClick: " + pdfFile);
pdfView.fromFile(pdfFile).load();
}
});
}
}