【问题标题】:Android not showing menuAndroid不显示菜单
【发布时间】:2017-05-30 17:34:12
【问题描述】:

我是 Android 的新手。我在显示菜单时遇到了一些问题。我在屏幕的右上角没有看到三个点。请帮助我理解我的错误。非常感谢!

活动:

public class MainActivity extends AppCompatActivity  {

    private EditText numb1;
    private EditText numb2;
    private Button btn_sum; 
    private Button btn_extr;
    private Button btn_mult;
    private Button btn_div;     
    private TextView result;        

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /*some code*/
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu, menu);
        return true;
    }   

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()) {
            case R.id.reset:
                numb1.setText("");
                numb2.setText("");
                break;
            case R.id.exit:
                fileList();
                break;
        }   
        return super.onOptionsItemSelected(item);
    }   
}  

xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/reset"
        android:title="@string/reset"
        app:showAsAction="never"/>
    <item android:id="@+id/exit"
        android:title="@string/exit"
        app:showAsAction="never"/>
</menu>

【问题讨论】:

标签: android menu


【解决方案1】:

Menu Items are not showing on Action Bar

检查这个答案

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="ifRoom|withText"
        android:title="@string/action_option1"/>
    <item
        android:id="@+id/action_settings34"
        android:orderInCategory="100"
        android:showAsAction="ifRoom|withText"
        android:title="@string/action_option2"/>
    <item
        android:id="@+id/action_settings3"
        android:orderInCategory="100"
        android:showAsAction="ifRoom|withText"
        android:title="@string/action_option3"/>

</menu> 

【讨论】:

    【解决方案2】:

    在您的活动中使用此代码,但您应该在其中包含操作栏。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.your_menu, menu);
    return true;
    }
    

    【讨论】:

      【解决方案3】:

      如果您在最旧版本的三星或其他版本上运行您的应用程序,则三个 DOTS 不会出现在 ActionBar 上

      所以尝试点击移动设备上的选项键

      出现三点的解决方法

      • 在您的应用程序类的 onCreate 方法中调用此方法

        private void makeActionOverflowMenuShown() {
        //devices with hardware menu button (e.g. Samsung Note) don't show action overflow menu
        try {
            ViewConfiguration config = ViewConfiguration.get(this);
            Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
            if (menuKeyField != null) {
                menuKeyField.setAccessible(true);
                menuKeyField.setBoolean(config, false);
            }
        } catch (Exception e) {
            Log.d(TAG, e.getLocalizedMessage());
        }
        }
        

      【讨论】:

        【解决方案4】:

        我也是 android 新手,我猜你在创建时在里面写了 onCreateOptionsMenu(Menu menu) 试试这个

        public class MainActivity extends AppCompatActivity {
        
        private EditText numb1;
        private EditText numb2;
        private Button btn_sum;
        private Button btn_extr;
        private Button btn_mult;
        private Button btn_div;
        private TextView result;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        /*some code*/
        
        
        }
        
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu, menu);
            return true;
        }
        
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
                case R.id.reset:
                    numb1.setText("");
                    numb2.setText("");
                    break;
                case R.id.exit:
                    fileList();
                    break;
            }
            return super.onOptionsItemSelected(item);
        }
        

        }

        【讨论】:

          【解决方案5】:

          您在创建选项菜单时犯了一个小错误。您应该在 onCreate(Bundle savedInstanceState) 方法之外调用 onCreateOptionsMenu() 和 onOptionsItemSelected() 方法。您可以查看以下示例:

          public class MainActivity extends AppCompatActivity {
          
              @Override
              protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);
                  setContentView(R.layout.activity_main);
              }
          
              @Override
              public boolean onCreateOptionsMenu(Menu menu) {
                  getMenuInflater().inflate(R.menu.menu, menu);
                  return true;
              }
          
              @Override
              public boolean onOptionsItemSelected(MenuItem item) {
                  switch(item.getItemId()) {
                      case R.id.reset:
                          break;
                      case R.id.exit:
                          fileList();
                          break;
                  }
                  return super.onOptionsItemSelected(item);
              } }
          

          【讨论】:

            【解决方案6】:

            帮助我理解我的错误 - 当然

            罪魁祸首在您的菜单 XML 文件中 app:showAsAction="never" 这一行用 app:showAsAction="ifRoom" 替换这一行

            这里的 showAsAction 设置为从不意味着您告诉不要在操作栏中显示我的菜单如果您替换为“ifRoom”意味着您说在操作栏中显示我的所有菜单并且我的所有菜单是否有空间

            【讨论】:

              猜你喜欢
              • 2014-02-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多