【发布时间】:2016-01-14 13:57:28
【问题描述】:
我正在使用 MaterialShowcaseView 库构建用户指南。我计划通过片段中的所有工具栏选项菜单项引导用户(Theme.AppCompat 不使用操作栏)。因此,我需要将每个选项菜单项作为视图引用。但不幸的是,我在onCreateOptionsMenu 收到 NullPointerException
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
getActivity().getMenuInflater().inflate(R.menu.account_summary_menu, menu);
View item = menu.findItem(R.id.action_filter).getActionView();
if(item == null) Log.d("TAG", "null");
super.onCreateOptionsMenu(menu, inflater);
}
这在onOptionsItemSelected 方法中效果很好,但不是首选。任何帮助都非常感谢。
UPD:片段代码
public class AccountSummary extends Fragment {
public AccountSummary() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_account_summary, container, false);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getActivity().setTitle(getResources().getStringArray(R.array.drawer_menu)[0]);
}
@Override
public void onResume() {
super.onResume();
}
//Create options menu
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.account_summary_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_filter:
showPopup();
return true;
case R.id.document_share:
try {
ExportData.exportSummaryAsCsv(getContext(), prepareCsvData());
} catch (IOException e) {
e.printStackTrace();
}
default:
return super.onOptionsItemSelected(item);
}
}
}
UPD2 接缝在菜单膨胀完成之前创建视图。我想我可以使用Thread.sleep() 之类的解决方法,但还有更优雅的方法吗?
【问题讨论】:
-
嗨@burzakovskiy 我面临同样的问题,我的要求也是一样的。我正在使用“mreram:showcaseview”库作为用户指南。在此我必须通过 View 对象来突出显示该部分。我在查找选项菜单图标的视图对象(右上角的三个点)时遇到问题,如果您有任何想法,请帮助我。
标签: android android-fragments android-optionsmenu showcaseview