【问题标题】:How to pass string url from Main Activity to next Activity and load url in webView [duplicate]如何将字符串 url 从 Main Activity 传递到下一个 Activity 并在 webView 中加载 url [重复]
【发布时间】:2018-02-03 06:45:48
【问题描述】:

我有两个Activity,一个是Mainactivity,另一个是Secondactivity。 Secondactivity 包含从 assets 文件夹加载本地 HTML 页面的 Webview。

Mainactivity 包含标记为 Button A 和 Button B 的按钮,按下时将启动 Secondactivity。我想将字符串作为 URL 从 Mainactivity 传递给 Secondactivity,它会在按下按钮 A 和按钮 B 时加载 A.html 和 B.html。

目前,我在 Mainactivity 类中有以下代码

 Fragment firstFragment1 = new browser();
            Bundle args1 = new Bundle();
            args1.putString("url1", "file:///android_asset/diploma.html");
            firstFragment1.setArguments(args1);
            moveToFragment(firstFragment1);
            break;

在 SecondActivity 类上,我有以下代码

    String url1 = getArguments().getString("url1");


    myWebView=(WebView)rootView.findViewById(R.id.webview);
    myWebView.getSettings().setBuiltInZoomControls(true);

    myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    myWebView.getSettings().setLoadsImagesAutomatically(true);
    myWebView.getSettings().setJavaScriptEnabled(true);

    myWebView.getSettings().setBuiltInZoomControls(true);

    myWebView.setInitialScale(1);
    myWebView.getSettings().setLoadWithOverviewMode(true);
    myWebView.getSettings().setUseWideViewPort(true);

    WebSettings webSettings = myWebView.getSettings();


    myWebView.loadUrl(url1);


    return rootView;


}

哪个适用于 Fragment 完美无缺,但我如何使它适用于 Activity 到 Activity??

【问题讨论】:

  • 你说你有 2 个活动,但在你的代码中你使用片段!

标签: java android android-intent webview


【解决方案1】:

在第一个活动中,您应该像这样为意图添加额外的参数:

// I assume Web.class is your second activity
Intent intent = new Intent(this, Web.class); 
intent.putExtra("url", your_url); 
startActivity(intent);

然后在第二个活动中你检索这样的参数:

String url = getIntent().getExtras().getString("url");
webView.load(url);

【讨论】:

    【解决方案2】:

    创建一个加载 web url 的常见活动

    例如:

    public class WebviewActivity extends AppCompatActivity {
    Activity mActivity;
    WebView webview_;
    String title ="";
    String url ="";
    ProgressDialog dialog;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.help_webview_activity);
        mActivity = this;
    
        findviews();
    
        Bundle bundle = getIntent().getExtras();
        if (bundle != null) {
             title = bundle.getString("title");
             url = bundle.getString("Url");
    
             setAction();
        }
        else {
            webview_.setVisibility(View.GONE);
    
        }
    }
    
    
    
    private void setAction() {
    
        try {
            //check internet connection first
            if (CommonUtils.isConnectingToInternet(WebviewActivity.this)) { 
                webview_.setVisibility(View.VISIBLE);
    
                WebSettings webSettings = webview_.getSettings();
                webview_.setWebViewClient(new MyWebViewClient());
                webSettings.setJavaScriptEnabled(true);
                webview_.getSettings().setSupportZoom(true);
                webview_.getSettings().setBuiltInZoomControls(true);
                webview_.getSettings().setDisplayZoomControls(true);
                webview_.loadUrl(url);
    
    
            }
            else {
    
                //alert  - no internet connection
            }
        } catch (Exception e) {
            //print exp
            e.printStackTrace();
        }
    }
    
    
    private void findviews() {
        webview_ = (WebView) findViewById(R.id.wbview);
    
    }
    
    
    
    
    public class MyWebViewClient extends WebViewClient {
    
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
    
            if(dialog == null){
                dialog = ProgressDialog.show(WebviewActivity.this, null, "Loading...");
                dialog.setCancelable(true);
            }
        }
    
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            if(dialog.isShowing())
                dialog.dismiss();
        }
    }
    }
    

    Xml 代码:

        <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_login_screen"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layoutDirection="ltr"
        tools:context=".activity.WebviewActivity">
    
    <android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTheme.AppBarOverlay">
    
        <android.support.v7.widget.Toolbar
    
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?android:attr/actionBarSize"
            android:supportsRtl="false"
            app:popupTheme="@style/AppTheme.PopupOverlay">
            <include layout="@layout/header_settinglayout" />
        </android.support.v7.widget.Toolbar>
    </android.support.design.widget.AppBarLayout>
    
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">
    
        <WebView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/wbview"
            >
    
        </WebView>
    
    </RelativeLayout>
    

    现在您可以从整个应用加载任何 url 或 html

    来自活动:

     if (CommonUtils.isConnectingToInternet(HelpActivity.this)) {
                    Intent i = new Intent(HelpActivity.this,WebviewActivity.class);
                    i.putExtra("title",getResources().getString(R.string.faqs));
                    i.putExtra("Url", "https://stackoverflow.com/questions/48594734/how-to-pass-string-url-from-main-activity-to-next-activity-and-load-url-in-webvi");
                    startActivity(i);
                }
                else {
    
                    //alert - no internet
                }
    

    来自片段:

     if (CommonUtils.isConnectingToInternet(getActivity())) {
                    Intent i = new Intent(getActivity(),WebviewActivity.class);
                    i.putExtra("title",getResources().getString(R.string.faqs));
                    i.putExtra("Url", "https://stackoverflow.com/questions/48594734/how-to-pass-string-url-from-main-activity-to-next-activity-and-load-url-in-webvi");
                    getActivity().startActivity(i);
                }
                else {
    
                    //alert - no internet
                }
    

    Webview 加载网址

    i.putExtra("Url", "https://stackoverflow.com/questions/48594734/how-to-pass-string-url-from-main-activity-to-next-activity-and-load-url-in-webvi");
    

    Webview 从 assets 目录加载 html

     i.putExtra("Url", "file:///android_asset/diploma.html");
    

    【讨论】:

      【解决方案3】:

      如果您正在使用活动,请将 url 作为字符串传递并在下一个活动中获取。如下代码所示

      Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
      intent.putExtra("url","somepage.com");
      startActivity(intent);
      

      在webView中,这样搞定

      String url = getIntent().getStringExtras("url");
      webView.load("url");
      

      【讨论】:

      • 它在 getIntent 上以红色突出显示错误,表示无法解决 getIntent 错误。如何解决。
      • 好的,谢谢,我使用了你的两个想法,现在效果很好。
      • 如果有帮助,请将答案标记为正确。
      • 我编辑了答案,现在它不会显示红线
      • 我的事情你应该做 url 编码来解析和设置 web 视图
      猜你喜欢
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-27
      • 2012-12-19
      • 1970-01-01
      • 2020-10-19
      相关资源
      最近更新 更多