对片段实现3点菜单

时间:2016-11-09 09:07:59

标签: 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 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);
}

但是它说“onCreateOptionsMenu”方法不会覆盖它的超类。

看起来我很想念一些非常基本的东西,不知道它是什么。

由于

4 个答案:

答案 0 :(得分:1)

试试这个

<强> 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_filter"
        android:title="@string/filter"
        android:orderInCategory="10"
        android:icon="@drawable/filter"
        app:showAsAction="ifRoom" />


</menu>

OnCreate片段方法

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

onCreateOptionsMenu

@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);
    } 

我希望它可以帮到你!

答案 1 :(得分:0)

使用&#34; 3点&#34;将一个ImageButton放在片段的布局上绘制。然后使用PopupMenu在单击ImageButton时显示菜单。我希望Shylendra给出的以下答案可以帮助您:https://stackoverflow.com/a/21329225/7010102

答案 2 :(得分:0)

删除override注释,因为它不允许您这样做。或者尝试使用不同的xml菜单资源来解决此问题。所谓main_menu适用于您的MainAcitivty和{ {1}} {1}}。{/}

答案 3 :(得分:0)

    // 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>