Я использовал в своем приложении recyclerView для отображения всех файлов из внешнего хранилища.Пока я не изменил его, он работал нормально, когда он был реализован в "MainActivity.java".
Теперь я хочу, чтобы мое приложение имело "BottomNavigationBar";для этого я использую фрагменты.Проблема в том, что приложение вылетает, когда я касаюсь определенного пункта в меню (тот, который содержит RecyclerView).
Я изменил весь метод "this" на ".getActivity ()", но он все равно потерпел крах.Я изменил его на «.getActivity (). GetApplicationContext ()», но он все равно потерпел крах.
Извините, мой компьютер не поддерживает аппаратное ускорение, поэтому я не могу правильно показать, в чем заключается ошибка.Вместо этого я подключил отладчик к своему подключенному телефону и установил точки останова.При сбое приложения отладчик выделил строку "RecyclerView recyclerView = getView().findViewById(R.id.recyclerview);"
.
Вот фрагмент кода:
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_records, container, false);
}
private static final int PERMISSION_REQUEST = 1000;
private ArrayList<String> mNames = new ArrayList<>();
public static ArrayList<String> NbFiles = new ArrayList<>();
public ArrayList<String> PathFiles = new ArrayList<>();
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Check if we have the permission to read storage
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
//We don't have the permission, so request it.
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, PERMISSION_REQUEST);
}
//We already have permission
else {
permissionExists();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PERMISSION_REQUEST) {
if (resultCode == RESULT_OK) {
permissionExists();
} else {
//handle error
}
}
}
private void initRecyclerView() {
RecyclerView recyclerView = getView().findViewById(R.id.recyclerview);
RecyclerViewAdapter adapter = new RecyclerViewAdapter(mNames, getActivity().getApplicationContext(), (RecyclerViewAdapter.OnNoteListener) this);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext()));
}
private void permissionExists() {
String path = Environment.getExternalStorageDirectory().toString() + "/Rapture";
File directory = new File(path);
boolean success = true;
if (!directory.exists()) {
success = directory.mkdirs();
}
if (success) {
File[] arrayFiles = directory.listFiles();
for (File file : arrayFiles) {
mNames.add(file.getName());
PathFiles.add(file.getPath());
NbFiles.add(file.getName());
}
}
initRecyclerView();
}
}
[Дайте мне знать, если вам нужно больше кода]
Как я могу это исправить?