【发布时间】:2019-12-10 11:04:56
【问题描述】:
我在片段的 ActionBar 中实现后退按钮时遇到问题。由于这是一个片段,我无权访问 getSupportActionBar();每次我使用这个或类似的代码时:
ActionBar actionBar = getActivity().getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
只会导致 NullPointerExceptions。
我在 StackOverflow 上查看了许多类似的问题,但其中大多数都指定给 Activity 或 AppCompatActivities,它们在 Fragments 中不起作用。使用
getActivity().getActionBar().setDisplayHomeAsUpEnabled(true);
只会导致 NullPointerExceptions。其他类似的问题和答案没有帮助我解决这个问题,所以我不得不创建一个新主题。
这是我得到错误的地方:
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);
}
}
【问题讨论】:
标签: java android android-fragments android-actionbar