Я пытаюсь изменить навигацию по кнопке «Назад» для указанного действия c, но у меня возникает ошибка
НЕПРЕРЫВНАЯ ИСКЛЮЧЕНИЕ ТЕКУЩАЯ ДЕЯТЕЛЬНОСТЬ: BookmarksActivity java .lang.NullPointerException: Попытайтесь вызвать виртуальный метод 'void android .os.Bundle.unparcel ()' для пустой ссылки на объект в android .os.Bundle.putAll (Bundle. java: 250) в android .content. Intent.putExtras (Intent. java: 8597) на usb.terminal.view.fragment.BookmarksFragment $ 2.onItemClick (BookmarksFragment. java: 162)
Я пробовал два подхода, Я изменил функцию кнопки «Назад» в своем ActionBarFragment. Проблема с моим вторым подходом состоит в том, что он переходит к требуемой активности, как и ожидалось, но продолжает сбой с ошибкой, указанной выше, когда я нажимаю на элемент в моем списке.
private void initListeners() {
btnBackListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Log.d("Back Button", "Back button pressed");
int flag = BookmarksFragment.getFlag();
Log.d("Flag Number", String.valueOf(flag));
if (flag == 1){
BookmarksFragment class2 = new BookmarksFragment();
class2.fetchBookmarkCategories();
}
else {
if(getActivity()!=null) {
getActivity().finish();
}
}
}
return true;
}
};
и, во-вторых, вместо вызова функция другого класса, я попытался перезагрузить действие, используя:
BookmarksFragment class2 = new BookmarksFragment();
class2.fetchBookmarkCategories();
Это мое действие закладки, которое я пытаюсь получить желаемую функцию.
public class BookmarksActivity extends EmptyActivity {
public BookmarksActivity() {
super(new BookmarksFragment());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected void onStart() {
super.onStart();
((ActionBarFragment) actionBarFragment).updateTitle(R.string.bookmark_activity_title);
}
}
Это мой BookmarkFragment (только часть кода):
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
this.userId = PreferencesHelper.getPrefsUserId(ctx);
categoriesListView = (NonScrollListView) view.findViewById(R.id.bookmark_categories_list);
recipesListView = (NonScrollListView) view.findViewById(R.id.bookmark_recipes_list);
noResultLayout = (LinearLayout)this.getView().findViewById(R.id.bookmark_recipes_empty_panel);
scrollButton = (CardView) this.getView().findViewById(R.id.load_more_button);
scrollAction = (LinearLayout) this.getView().findViewById(R.id.load_more_action_layout);
scrollLoading = (LinearLayout) this.getView().findViewById(R.id.load_more_loading_layout);
scrollLoadingImage = (ImageView) this.getView().findViewById(R.id.load_more_loading_icon);
recipesAdapter = new RecipesAdapter(ctx, recipesLinkedList);
categoriesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Category category = categoriesLinkedList.get(position);
fetchBookmarksFromCategory(category.getId());
}
});
recipesListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(ctx, RecipePagerActivity.class);
Bundle extras = activity.getIntent().getExtras();
intent.putExtra("Check_Status", 1);
intent.putExtras(extras);
int recipeId = recipesLinkedList.get(position).getId();
int recipeCount = recipesLinkedList.get(position).getNbFavorite();
boolean recipeStatus = recipesLinkedList.get(position).isFavorite();
intent.putExtra("Recipe Status", recipeStatus);
intent.putExtra("Recipe_Count", recipeCount);
intent.putExtra(RecipesManager.KEY_ID_RECIPE, recipeId);
}
});
setSpinner(view);
fetchBookmarkLists();
}
Оба подхода дают мне одинаковые ошибки. Может кто-нибудь помочь с решением здесь, пожалуйста?