2 个 Web 视图的 2 个不同的上下文菜单
2 Different Context Menus for 2 Webviews
我需要创建上下文菜单以在 web 视图中长按时打开链接。但我的代码仅适用于第二个 webview。我能做什么?
代码如下:
@Override
public void onCreateContextMenu(ContextMenu Menu, View v, ContextMenu.ContextMenuInfo MenuInfo){
super.onCreateContextMenu(Menu, v, MenuInfo);
final WebView.HitTestResult result1 = webview1.getHitTestResult();
final WebView.HitTestResult result2 = webview2.getHitTestResult();
if(v.getId() == R.id.webview2){
if (result1.getType() == WebView.HitTestResult.ANCHOR_TYPE ||
result1.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
Menu.add(0, 1, 0, "Open Link").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem)
{
webview1.loadUrl(result1.getExtra());
return false;
}
});
}
else if(v.getId() == R.id.webview1)
{
if (result2.getType() == WebView.HitTestResult.ANCHOR_TYPE ||
result2.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
Menu.add(0, 1, 0, "Open Link").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem)
{
webview2.loadUrl(result2.getExtra());
return false;
}
});
}
}
}
}
看起来您用于检查视图是否为 webview1 的第二个 if 放错了地方。试试这个:
public void onCreateContextMenu(ContextMenu Menu, View v, ContextMenu.ContextMenuInfo MenuInfo){
super.onCreateContextMenu(Menu, v, MenuInfo);
final WebView.HitTestResult result1 = webview1.getHitTestResult();
final WebView.HitTestResult result2 = webview2.getHitTestResult();
if(v.getId() == R.id.webview2){
if (result1.getType() == WebView.HitTestResult.ANCHOR_TYPE ||
result1.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
Menu.add(0, 1, 0, "Open Link").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem)
{
webview1.loadUrl(result1.getExtra());
return false;
}
});
}
}
else if(v.getId() == R.id.webview1)
{
if (result2.getType() == WebView.HitTestResult.ANCHOR_TYPE ||
result2.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
Menu.add(0, 1, 0, "Open Link").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem)
{
webview2.loadUrl(result2.getExtra());
return false;
}
});
}
}
}
我需要创建上下文菜单以在 web 视图中长按时打开链接。但我的代码仅适用于第二个 webview。我能做什么?
代码如下:
@Override
public void onCreateContextMenu(ContextMenu Menu, View v, ContextMenu.ContextMenuInfo MenuInfo){
super.onCreateContextMenu(Menu, v, MenuInfo);
final WebView.HitTestResult result1 = webview1.getHitTestResult();
final WebView.HitTestResult result2 = webview2.getHitTestResult();
if(v.getId() == R.id.webview2){
if (result1.getType() == WebView.HitTestResult.ANCHOR_TYPE ||
result1.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
Menu.add(0, 1, 0, "Open Link").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem)
{
webview1.loadUrl(result1.getExtra());
return false;
}
});
}
else if(v.getId() == R.id.webview1)
{
if (result2.getType() == WebView.HitTestResult.ANCHOR_TYPE ||
result2.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
Menu.add(0, 1, 0, "Open Link").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem)
{
webview2.loadUrl(result2.getExtra());
return false;
}
});
}
}
}
}
看起来您用于检查视图是否为 webview1 的第二个 if 放错了地方。试试这个:
public void onCreateContextMenu(ContextMenu Menu, View v, ContextMenu.ContextMenuInfo MenuInfo){
super.onCreateContextMenu(Menu, v, MenuInfo);
final WebView.HitTestResult result1 = webview1.getHitTestResult();
final WebView.HitTestResult result2 = webview2.getHitTestResult();
if(v.getId() == R.id.webview2){
if (result1.getType() == WebView.HitTestResult.ANCHOR_TYPE ||
result1.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
Menu.add(0, 1, 0, "Open Link").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem)
{
webview1.loadUrl(result1.getExtra());
return false;
}
});
}
}
else if(v.getId() == R.id.webview1)
{
if (result2.getType() == WebView.HitTestResult.ANCHOR_TYPE ||
result2.getType() == WebView.HitTestResult.SRC_ANCHOR_TYPE) {
Menu.add(0, 1, 0, "Open Link").setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem)
{
webview2.loadUrl(result2.getExtra());
return false;
}
});
}
}
}