获取选项菜单以执行操作

时间:2015-03-05 16:20:44

标签: java android

我做了一个选项菜单,我试图获得像保存和打开这样的按钮,以便能够工作并将文件保存到设备上的内部存储器中。当我输入代码时,它表示无法应用打开和保存。它也给了我一个错误,说它需要一个意图,但我给它一个menuitem。我将如何将其作为一个意图并修复它?这是我的代码。

import android.app.ActionBar;
import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

import static com.exaple.josh.unidrive.R.id.help;
import static com.exaple.josh.unidrive.R.id.list_item;
import static com.exaple.josh.unidrive.R.id.open;
import static com.exaple.josh.unidrive.R.id.save;

/ **  *由Josh于2015年1月31日创建。  * /

public class Documents extends ActionBarActivity {

@Nullable
@Override
public ActionBar getActionBar() {
    return super.getActionBar();
        }

EditText et;
EditText txtView;
private String data;
private String file = "mydata";

private Menu menuresource;


public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menuresource, (android.view.Menu) menu);
    return true;
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.documents);
}
@Override
public boolean onOptionsItemSelected(Menu item) {
    // Handle presses on the action bar items
    switch (item.getItem(Menu.CATEGORY_ALTERNATIVE)) {
        case Save():
            showToast("Save Clicked");
            return true;
        case Open():
            showToast("Open Clicked");
            return true;
        return super.onOptionsItemSelected((MenuItem) item);

    }
}


public void showToast(String message) {
    Toast toast=Toast.makeText(getApplicationContext(),message, Toast.LENGTH_SHORT);
    toast.show();
}

1 个答案:

答案 0 :(得分:0)

基本上switch语句在onOptionsItemSelected内是错误的,并且该方法的签名也不正确。

根据documentation onOptionsItemSelected将MenuItem作为参数

这样的事情可以胜任:

@Override
public boolean onOptionsItemSelected(MenuItem item) {  //This method uses MenuItem as parameter
// Handle presses on the action bar items
    switch (item.getItemId()) {
        case R.id.save_item_id:
            showToast("Save Clicked");
            return true;
        case R.id.open_item_id:
            showToast("Open Clicked");
            return true;
        return super.onOptionsItemSelected((MenuItem) item);
   }
}

save_item_idopen_item_id是您为menuresource.xml文件中的菜单项指定的ID的位置