gpt4 book ai didi

java - 如何替换 onOptionsItemSelected 中的 fragment ?

转载 作者:行者123 更新时间:2023-11-29 19:01:48 25 4
gpt4 key购买 nike

<分区>

我有一个AppCompatActivity,它是应用程序的主要 View 。我有一个 OptionsMenu,它带有一个用于显示 抽屉菜单 的按钮和另一个用于过滤结果的按钮(因为抽屉中的每个 MenuItem是不同的 Listfragments)。

我需要完成的是,当单击 OptionsMenu 上的过滤器按钮时,打开一个包含所有过滤条件的 fragment

所以这是管理上面解释的代码:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_menu:

if (drawer.isDrawerOpen(GravityCompat.START)) {
hideDrawer();
} else {
showDrawer();
}

return true;
case R.id.action_filter:

fragmentManager = getFragmentManager();

fragment = new FilterFragment();
args.putInt("idList", idList);
fragment.setArguments(args);

fragmentManager.beginTransaction().replace(R.id.drawer_layout, fragment).commit();
return true;
default:
return super.onOptionsItemSelected(item);
}
}

这样做会出现 fragment ,然后我得到一个NPE:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TableRow.setVisibility(int)' on a null object reference

fragment onCreateViewMethod

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

setHasOptionsMenu(true);
getActivity().invalidateOptionsMenu();
skbrDays = getActivity().findViewById(R.id.seekBar);
daysLostRow = getActivity().findViewById(R.id.daysLostRow);
genderRow = getActivity().findViewById(R.id.genderRow);
locationRow = getActivity().findViewById(R.id.locationRow);
rgupGender = getActivity().findViewById(R.id.rgupGender);
rgupType = getActivity().findViewById(R.id.rgupType);
btnBreed = getActivity().findViewById(R.id.btnBreed);
recyclerView = getActivity().findViewById(R.id.recyclerView);

daysLostRow.setVisibility(View.VISIBLE);

return inflater.inflate(R.layout.activity_filter, container, false);
}

好的,所以我得到了 NPE,因为 getActivity() 正在返回 null。现在我不得不猜测,并不知道原因,那是因为我没有从 Activity 中替换 onCreate 方法上的 fragment ?

如果这就是我如何从 onCreate 调用 fragment 获得相同结果的原因?

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