我做了一个选项菜单,我试图获得像保存和打开这样的按钮,以便能够工作并将文件保存到设备上的内部存储器中。当我输入代码时,它表示无法应用打开和保存。它也给了我一个错误,说它需要一个意图,但我给它一个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();
}
答案 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_id
和open_item_id
是您为menuresource.xml
文件中的菜单项指定的ID的位置