gpt4 book ai didi

java - 尝试修改 Activity 的后退按钮

转载 作者:行者123 更新时间:2023-12-02 09:02:40 26 4
gpt4 key购买 nike

我正在尝试修改特定 Activity 的后退按钮导航,但遇到错误

UNCAUGHT EXCEPTION CURRENT ACTIVITY : BookmarksActivity java.lang.NullPointerException: Attempt to invoke virtual method 'void android.os.Bundle.unparcel()' on a null object reference at android.os.Bundle.putAll(Bundle.java:250) at android.content.Intent.putExtras(Intent.java:8597) at usb.terminal.view.fragment.BookmarksFragment$2.onItemClick(BookmarksFragment.java:162)

我尝试了两种方法,我修改了 ActionBarFragment 中的后退按钮功能。我的第二种方法的问题是,它按预期进入所需的 Activity ,但当我单击列表中的某个项目时,它会不断崩溃并出现上面指定的错误。

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;
}
};

其次,我没有调用另一个类的函数,而是尝试使用以下方法重新加载 Activity :

BookmarksFragment class2 = new BookmarksFragment();
class2.fetchBookmarkCategories();

这是我的书签 Activity ,我正在尝试获得我想要的功能。

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();
}

这两种方法都给我带来了相同的错误。有人可以帮忙解决这个问题吗?

最佳答案

您的 activity.getIntent().getExtras() 似乎返回 null 值。

请在使用extras之前尝试进行空检查,并在需要时分配new Bundle(),例如...

                int recipeId = recipesLinkedList.get(position).getId();
int recipeCount = recipesLinkedList.get(position).getNbFavorite();
boolean recipeStatus = recipesLinkedList.get(position).isFavorite();

Intent intent = new Intent(ctx, RecipePagerActivity.class);
Bundle extras = activity.getIntent().getExtras();
if (extras == null) extras = new Bundle(); //solution

extras.putInt("Check_Status", 1);
extras.putInt(RecipesManager.KEY_ID_RECIPE, recipeId);
extras.putInt("Recipe_Count", recipeCount);
extras.putBoolean("Recipe Status", recipeStatus);
intent.putExtras(extras);

关于java - 尝试修改 Activity 的后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60051710/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com