动作栏中的Android动作按钮没有出现?

时间:2014-06-24 11:11:24

标签: android android-actionbar action-menu

我想在操作栏中创建一个添加按钮,但在运行代码时似乎不会出现。

这是我的 main_activity.java

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);




        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment()).commit();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.main_activity_actions, menu);
            return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_add) {

            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */
    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_main, container,
                    false);
            return rootView;
        }
    }

}

这是我的 main_activity_actions.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item android:id="@+id/action_add"
          android:icon="@drawable/ic_add"
          android:title="Add"
          android:showAsAction="always"
           />

</menu>

请帮助 我无法弄清楚出了什么问题!

3 个答案:

答案 0 :(得分:1)

由于您的Activity扩展了ActionBarActivity,因此您将使用支持库中的AppCompat。

所以改为

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:yourapp="http://schemas.android.com/apk/res-auto" >
    <item android:id="@+id/action_add"
      android:icon="@drawable/ic_add"
      android:title="Add"
      yourapp:showAsAction="always"
       />
    ...
</menu>

引用文档

  

请注意,上面的showAsAction属性使用自定义命名空间   在标签中定义。使用任何XML时都需要这样做   由支持库定义的属性,因为这些属性可以   旧设备上的Android框架中不存在。所以你必须使用   您自己的命名空间作为由...定义的所有属性的前缀   支持图书馆。

答案 1 :(得分:0)

将menu_xml更改为: -

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_add"
        android:clickable="true"
        android:icon="@drawable/ic_add"
        android:showAsAction="always"
        android:title="action_location_found">
</menu>

答案 2 :(得分:0)

用以下菜单文件替换菜单文件

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    style="@style/Theme.AppCompat.Light"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context="yourpackagename.Mainactivity" >



<item android:id="@+id/action_add" 
  android:icon="@drawable/add_plush" app:showAsAction="always"></item>
</menu>

多数民众赞成......