点击导航抽屉项目时在 WebView 中打开链接

Posted

技术标签:

【中文标题】点击导航抽屉项目时在 WebView 中打开链接【英文标题】:Open link in WebView when tapping a navigation drawer item 【发布时间】:2022-01-16 16:33:30 【问题描述】:

按照教程here 创建导航抽屉并且工作正常。 webview 也会在应用启动时加载。

我的着陆页在应用启动时加载:

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

    myWebView = findViewById(R.id.activity_main_webview);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setjavascriptEnabled(true);
    myWebView.setWebChromeClient(new WebChromeClient());
    myWebView.loadUrl("http://192.168.43.105/public_html/central/updates.php");
    myWebView.setWebViewClient(new WebViewClient());

选择导航项时应打开 URL:

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) 
        int id = item.getItemId();
        if (id == R.id.nav_search) 
            myWebView.loadUrl("http://192.168.43.105/public_html/central/search.php");
            return true;
        
        if (actionBarDrawerToggle.onOptionsItemSelected(item)) 
              //return super.onOptionsItemSelected(item);
        
        return super.onOptionsItemSelected(item);
    

抽屉项目位于 res>menu>navigation_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      tools:ignore="HardcodedText">

      <item
         android:id="@+id/nav_search"
         android:title="Search" />
</menu>

试过了:

String url = "http://192.168.43.105/public_html/central/search.php";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);

然后从 developer.android.com 关注这个:

    switch (item.getItemId()) 
    case R.id.nav_search:
    String url="http://192.168.43.105/public_html/central/search.php";
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.loadUrl(url);
        return true;
    default:
        return super.onOptionsItemSelected(item);

启动应用程序时我没有收到任何错误。任何帮助将不胜感激!

【问题讨论】:

【参考方案1】:

对于外部 URL 试试这个:

Uri uri = Uri.parse("https://www.google.com");
startActivity(new Intent(Intent.ACTION_VIEW, uri));

如果你想在你的活动中打开网络浏览器,试试这个:

WebView webView = (WebView) findViewById(R.id.webView1);
WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
webView.loadUrl(URL);

如果您想在浏览器中使用缩放控件,请同时添加:

settings.setSupportZoom(true);
settings.setBuiltInZoomControls(true);

【讨论】:

尝试了您的建议,但链接仍未打开。我在帖子上添加并编辑了一些行。我也尝试删除 onCreate 上的 url 但仍然无法正常工作。 您的初始更新 URL 加载成功了吗?

以上是关于点击导航抽屉项目时在 WebView 中打开链接的主要内容,如果未能解决你的问题,请参考以下文章

导航抽屉 - 禁用点击抽屉后面的项目

如何获取导航抽屉中的项目以更改视图

如何使向上按钮返回而不是打开导航抽屉

当我点击图标时打开抽屉反应导航版本 5

如何在运行时在由 android studio 创建的导航抽屉中设置默认片段

将 Vuetify 导航抽屉切换到迷你,然后是临时的