Android 将3点菜单实现为一个片段
嗨,伙计们,我想在片段级别创建3点动作条菜单,条件是我想在1个片段上显示该菜单,而不是全部显示,如果我在我的主要活动中创建它们,那么我无法隐藏它们,所以我需要在片段级别创建它们。到目前为止,我已经在我的片段上尝试了这段代码Android 将3点菜单实现为一个片段,android,android-fragments,android-optionsmenu,Android,Android Fragments,Android Optionsmenu,嗨,伙计们,我想在片段级别创建3点动作条菜单,条件是我想在1个片段上显示该菜单,而不是全部显示,如果我在我的主要活动中创建它们,那么我无法隐藏它们,所以我需要在片段级别创建它们。到目前为止,我已经在我的片段上尝试了这段代码 @Override public boolean onCreateOptionsMenu(Menu menu) { getActivity().getMenuInflater().inflate(R.menu.main, menu); return true;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getActivity().getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
switch (item.getItemId()) {
case R.id.sync:
Toast.makeText(this, "Sync data...", Toast.LENGTH_SHORT).show();
return true;
}
return super.onOptionsItemSelected(item);
}
但是它说方法“onCreateOptions菜单”并没有从它的超类重写 看起来我错过了一些非常基本的东西,不知道是什么 谢谢像这样试试 菜单_filter.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" >
<item
android:id="@+id/action_filter"
android:title="@string/filter"
android:orderInCategory="10"
android:icon="@drawable/filter"
app:showAsAction="ifRoom" />
</menu>
onCreateOptions菜单
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_filter.xml, menu); // Use filter.xml from step 1
}
onOptionsItemSelected
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == R.id.action_filter){
//Do whatever you want to do
return true;
}
return super.onOptionsItemSelected(item);
}
我希望它能帮助你 在片段的布局上放置一个可绘制“3点”的ImageButton。然后使用PopupMenu在单击ImageButton时显示菜单。我希望Shylendra给出的以下答案能帮助您:删除
覆盖注释,因为它不允许您这样做。或者尝试使用不同的xml菜单资源来解决这个问题。比如说主菜单
用于维护活动和主框架用于片段//Todo三点代码。。。。。
// Todo Three Dots Code.....
@Override
public void onPrepareOptionsMenu(Menu menu) {
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
inflater.inflate(R.menu.minu_filter, menu);
menu.findItem(R.id.action_enter_manually).setVisible(true);
menu.findItem(R.id.action_validation_report).setVisible(false);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == R.id.action_enter_manually){
Log.e("keshav","Enter Manually");
Intent i=new Intent(getActivity(), EnterManually.class);
startActivity(i);
//Do whatever you want to do
return true;
}
if(id == R.id.action_validation_report){
Log.e("keshav","Enter Manually 7128");
Intent i=new Intent(getActivity(), DateWiseReportActivity.class);
startActivity(i);
//Do whatever you want to do
return true;
}
return super.onOptionsItemSelected(item);
}
----------------------------------------------------------------
menu_filter.xml
----------------------------------------------------------------
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item
android:id="@+id/action_enter_manually"
android:icon="@mipmap/enter_manualy_48"
android:orderInCategory="10"
android:title="Enter Manually"
app:showAsAction="collapseActionView" />
<item
android:id="@+id/action_validation_report"
android:icon="@drawable/done"
android:orderInCategory="10"
android:title="Validation Report"
app:showAsAction="collapseActionView" />
</menu>
@凌驾
在PrepareOptions功能表(菜单)上公共作废{
}
@凌驾
创建选项菜单(菜单菜单,菜单充气机){
super.onCreateOptions菜单(菜单,充气机);
menu.clear();
充气机。充气(R.menu.minu过滤器,菜单);
menu.findItem(R.id.action\u手动输入)。setVisible(true);
menu.findItem(R.id.action\u validation\u report).setVisible(false);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
int id=item.getItemId();
如果(id==R.id.action\u手动输入){
Log.e(“keshav”,“手动输入”);
意图i=新意图(getActivity(),EnterManually.class);
星触觉(i);
//做你想做的事
返回true;
}
if(id==R.id.action\u validation\u report){
Log.e(“keshav”,“手动输入7128”);
意图i=新意图(getActivity(),DateWiseReportActivity.class);
星触觉(i);
//做你想做的事
返回true;
}
返回super.onOptionsItemSelected(项目);
}
----------------------------------------------------------------
menu_filter.xml
----------------------------------------------------------------
哪种方法你不能覆盖?OnCreateOptions菜单我应该在我的主要活动或我想要3个点的片段上设置OnCreateOptions菜单方法?通过此代码我可以显示3个点菜单,这是毫无疑问的,但因为我们在maniactivity创建它,所以我们可以隐藏不同片段的OnCreateOptions菜单方法,根据这段代码,它出现在所有片段上,而这不是我想要在片段中显示点菜单的onCreateOptions菜单方法。UI已经尝试在我的片段上放置onCreateOptions菜单方法,但它说的是方法“onCreateOptions菜单”没有从它的超类重写。我尝试对Oncreate方法进行一些调整,现在它可以工作了,谢谢
// Todo Three Dots Code.....
@Override
public void onPrepareOptionsMenu(Menu menu) {
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
inflater.inflate(R.menu.minu_filter, menu);
menu.findItem(R.id.action_enter_manually).setVisible(true);
menu.findItem(R.id.action_validation_report).setVisible(false);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id == R.id.action_enter_manually){
Log.e("keshav","Enter Manually");
Intent i=new Intent(getActivity(), EnterManually.class);
startActivity(i);
//Do whatever you want to do
return true;
}
if(id == R.id.action_validation_report){
Log.e("keshav","Enter Manually 7128");
Intent i=new Intent(getActivity(), DateWiseReportActivity.class);
startActivity(i);
//Do whatever you want to do
return true;
}
return super.onOptionsItemSelected(item);
}
----------------------------------------------------------------
menu_filter.xml
----------------------------------------------------------------
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item
android:id="@+id/action_enter_manually"
android:icon="@mipmap/enter_manualy_48"
android:orderInCategory="10"
android:title="Enter Manually"
app:showAsAction="collapseActionView" />
<item
android:id="@+id/action_validation_report"
android:icon="@drawable/done"
android:orderInCategory="10"
android:title="Validation Report"
app:showAsAction="collapseActionView" />
</menu>