如何在Android应用中添加操作栏?

时间:2014-01-04 15:09:05

标签: java android

我刚开始使用Android。想要在tutorial之后添加操作栏。我添加了res/menu/main_activity_actions.xml

 <menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:NecoSeparator="http://schemas.android.com/apk/res-auto" >
<!-- Search, should appear as action button -->
<item android:id="@+id/action_search"
      android:icon="@drawable/ic_action_search"
      android:title="@string/action_search"
      NecoSeparator:showAsAction="ifRoom"  />

<!-- Settings, should always be in the overflow -->
<item android:id="@+id/action_settings"
      android:title="@string/action_settings"
      android:showAsAction="never" />

MainActivity.java我做:

  public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu items for use in the action bar
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main_activity_actions, menu);
    return super.onCreateOptionsMenu(menu);
}

但Eclipse说无法找到:R.menu.main_activity_actions

这段代码有什么问题?我必须用这个xml文件做更多的事情?

更新

MainActivity.java

package com.example.necoseparator;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends Activity {

    public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";

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


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_activity_actions, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle presses on the action bar items
        switch (item.getItemId()) {
            case R.id.action_search:
                openSearch();
                return true;
            case R.id.action_settings:
                openSettings();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.edit_message);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }

    }

2 个答案:

答案 0 :(得分:2)

我认为主要问题是保存菜单布局,如果文件中有错误,可能会发生错误。请使用我的代码更改菜单文件并保存并导入R文件(确保不是android.R且必须为YourPackageName.R)然后清理项目并运行。

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:id="@+id/action_settings"
    android:orderInCategory="100"
    android:showAsAction="never"
    android:title="filtered"
    />

<item
    android:id="@+id/menu_load"
    android:icon="@drawable/ic_luncher"
    android:orderInCategory="200"
    android:showAsAction="always"
    android:title="update"/>

 </menu>

答案 1 :(得分:1)

删除此行xmlns:NecoSeparator="http://schemas.android.com/apk/res-auto,然后重试                       

    <!-- Settings, should always be in the overflow -->
    <item android:id="@+id/action_settings"
          android:title="@string/action_settings"
          android:showAsAction="never" />
</menu>