我有一个程序,有三个 webviews。每个 webview 都启用了 JavaScript,并且具有动态生成的内容(列表、图标、旋转动画等)。那里的一切都很好。
现在我想添加一个复制和粘贴功能,以便用户可以将其他活动的值粘贴到剪贴板,然后将它们复制到我的活动中。我想使用选项菜单执行此操作 - 显示“复制”和“粘贴”选项。现在的问题是,当按下菜单按钮时,我的 webview 的 HTML 内容会消失,无论我使用什么方法来创建我的选项菜单(即 onCreateOptionsMenu(),或者使用 onKeyDown() 中间步骤来阻止 webview 消费事件)以及我是否使用 .add 或在 XML 中定义菜单。
任何人都知道为什么会发生这种情况?菜单是否会导致某种 onPause 被调用,这可能会导致 html 被卸载?下面是我的菜单制作/加载我的网络视图等的代码......
public boolean onCreateOptionsMenu(Menu menu) {
// menu.add(0, 0, 0, "test");
menu.add("HELP");
return true;
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
// do your menu stuff here
openOptionsMenu();
return true;
}
else
return super.onKeyDown(keyCode, event);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// starting values for each spinner
cur1Sel="Distance";
cur2Sel="Inch";
cur3Sel="Milimeter";
// starting inp and outp vals
inputValue = "";
outputValue="";
// init my constats from above...
POINT = 98;
CLEAR = 99;
face = Typeface.createFromAsset(getAssets(),"helv_bold.ttf");
format= new DecimalFormat("#.##");
// nab them application resrouces you banger you.
res = getResources();
// build ouor arrays for display purposes
measure_array = res.getStringArray(R.array.measure_array);
input_array = res.getStringArray(R.array.distance_array);
output_array = res.getStringArray(R.array.dist_inches_array);
// init measure abbreviation arrays, otherwise we get null pointers first round....
measure_abbrevs = new String[1];
measure_abbrevs[0] = "none";
// build abbreviation resrouces
input_abbrevs = res.getStringArray(R.array.dist_abbrev_array);
output_abbrevs = res.getStringArray(R.array.dist_inches_abbrev_array);
// Webviews For Each Spinner
measure_spinner = (WebView) this.findViewById(R.id.measure_view);
input_spinner = (WebView) this.findViewById(R.id.input_view);
output_spinner = (WebView) this.findViewById(R.id.output_view);
// this lets everyone know where we start....
curMeasure="Distance";
// Measurement Spinner
measure_spinner.getSettings().setJavaScriptEnabled(true);
measure_spinner.addJavascriptInterface(new AndroidSpinnerBridge(), "android");
measure_spinner.setVerticalScrollBarEnabled(false);
// measure_spinner.getSettings().setUseWideViewPort(false);
//input Spinner
input_spinner.getSettings().setJavaScriptEnabled(true);
input_spinner.addJavascriptInterface(new AndroidSpinnerBridge(), "android");
input_spinner.setVerticalScrollBarEnabled(false);
//input_spinner.loadUrl("javascript:SpinningWheel.setId({2});");
//output Spinner
output_spinner.getSettings().setJavaScriptEnabled(true);
output_spinner.addJavascriptInterface(new AndroidSpinnerBridge(), "android");
output_spinner.setVerticalScrollBarEnabled(false);
// buttons! weeee! Buttons!!
// IMPORTANT.. WAIT AWHILE FOR THE WEBVIEW TO PREPARE< OTHERWISE RENDERING MIGHT FAIL. Then load.
input_spinner.loadUrl("file:///android_asset/index_sp2.html");
measure_spinner.loadUrl("file:///android_asset/index_sp1.html");
output_spinner.loadUrl("file:///android_asset/index_sp3.html");
measure_spinner.loadUrl("javascript:SpinningWheel.fixTheFuckingError();");
};