gpt4 book ai didi

java - Android Studio : How to implement backbutton in ActionBar from Fragments

转载 作者:行者123 更新时间:2023-12-02 02:13:36 24 4
gpt4 key购买 nike

我在 fragment 的 ActionBar 中实现后退按钮时遇到问题。由于这是一个 fragment ,我无法访问 getSupportActionBar();每次我使用这个或类似的代码时:

ActionBar actionBar = getActivity().getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);

仅导致 NullPointerException。

我在 StackOverflow 上查看了许多类似的问题,但大多数都指定为 ActivitiesAppCompatActivities,它们在 Fragments 中不起作用。使用

getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);

仅导致 NullPointerException。其他类似的问题和答案并没有帮助我解决这个问题,所以我不得不创建一个新主题。

这是我收到错误的地方:

public class ExampleFragment extends Fragment{
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.clear();

ActionBar actionBar = getActivity().getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true); //This results in NullPointerException

inflater.inflate(R.menu.example_menu, menu);

super.onCreateOptionsMenu(menu, inflater);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home:
getActivity().getSupportFragmentManager().popBackStack();
return true;
}
return super.onOptionsItemSelected(item);
}
}

最佳答案

您需要接收supportActionBar。

public class ExampleFragment extends Fragment {

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);
return super.onCreateView(inflater, container, savedInstanceState);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
ActionBar actionBar = ((AppCompatActivity)requireActivity()).getSupportActionBar();
if (actionBar!=null) {
actionBar.setDisplayHomeAsUpEnabled(true);
}
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
requireActivity().getSupportFragmentManager().popBackStack();
return true;
}
return super.onOptionsItemSelected(item);
}
}

关于java - Android Studio : How to implement backbutton in ActionBar from Fragments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57315978/

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