我有一个场景,我在操作栏中获得了名为“click”的菜单项。我想让这个按钮自动点击而不用手动点击。有没有办法我可以从OnCreateView()访问Android操作栏菜单项,并访问具有名称“点击”的特定菜单项,并执行自动点击,就像我们使用方法“performclick()”按钮的方式。
任何人都可以帮我解决这个问题
答案 0 :(得分:6)
您可能会使用以下内容来处理菜单项点击:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
if (item.getItemId() == android.R.id.home)
{
this.onBackPressed();
}
}
所以只需使用正确的菜单项调用onOptionsItemSelected(MenuItem item)
......应该这样做......
要查找要点击的项目,只需在菜单创建中使用以下内容:
private MenuItem mItem = null;
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getSupportMenuInflater().inflate(R.menu.abs_backup, menu);
// get a reference to the item you want to click manually
mItem = menu.findItem(id);
return true;
}
然后只需拨打onOptionsItemSelected(mItem);
即可...
<强> PS:强>
如果您只是创建一个函数并在onOptionsItemSelected
中调用此函数以及您想要模拟按钮单击的任何地方,它可能会更漂亮...所以您不需要对该按钮的引用和我,这看起来更干净......
答案 1 :(得分:1)
您可以为MenuItem创建成员变量,并在需要时访问它。但它可能为null,因此请确保在访问之前检查null。您也可以尝试使用Actionbar.setCustomView(R.layout.something);
并处理整个布局和操作作为您的保留。
protected class fragment extends Fragment{
MenuItem searchItem;
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
if(searchItem!=null){
searchItem.setTitle("SEARCH");
searchItem.setOnMenuItemClickListener(menuItemClickListener);
}
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(com.sample.R.menu.menu_main, menu);
searchItem = menu.findItem(R.id.search);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int itemId_ = item.getItemId();
if (itemId_ == R.id.search) {
handleYourEvent();
return true;
}
return false;
}
}