ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 주요 Activity에서 다음 Activity로 String URL을 전달하고 webView에서 URL을 로드하는 방법 [중복]
    카테고리 없음 2020. 8. 12. 12:09

    질문

    두 개의 Activity가 있습니다. 하나는 MainActivity이고 다른 하나는 SecondActivity입니다. SecondActivity에는 assets 폴더에서 로컬 HTML 페이지를 로드하는 Webview가 포함되어 있습니다.

    MainActivity에는 button A 및 button B로 표시된 button이 포함되어 있습니다. MainActivity에서 Button A와 Button B를 눌렀을 때 A.html 및 B.html을로드하는 SecondActivity로 문자열을 URL로 전달하고 싶습니다.

    지금은 MainActivity class에 다음 코드가 있습니다.

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

    SecondActivity class에는 다음 코드가 있습니다.

        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로 전달하기 위해 어떻게 작동합니까 ??

     

    답변1

    첫 번째 Activity에서 다음과 같이 인 텐트에 추가 인수를 넣어야합니다.

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

    그런 다음 두 번째 Activity에서 다음과 같은 인수를 검색합니다.

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



    답변2

    Activity를 사용하는 경우 URL을 문자열로 전달하고 다음 Activity에서 가져옵니다.

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

    webView에서 다음과 같이 가져옵니다.

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



    답변3

    웹 URL을 로드하는 하나의 공통 Activity 만들기

    예 :

    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을 로드 할 수 있습니다.

    Activity에서 :

     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
                }

    Fragment에서 :

     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 로드 URL

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

    assets 디렉토리에서 Webview로드 html

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



     

     

     

     

    출처 : https://stackoverflow.com/questions/48594734/how-to-pass-string-url-from-main-activity-to-next-activity-and-load-url-in-webvi

    댓글

Designed by Tistory.