WebView在浏览器中打开而不是在我的应用程序中打开

时间:2017-01-10 07:10:11

标签: android android-layout android-webview

我有一个适配器,可以将数据添加到布局中。布局的一个要素是链接。如果用户点击此元素,我希望它在WebView

中打开链接

现在,我有这段代码:

public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> {

    private Context context;

    private List<Card> cardData;

    private WebView mWebview;

    public static class ViewHolder extends RecyclerView.ViewHolder {
        public RelativeLayout link;

        public ViewHolder(View v) {
            super(v);

            link = (RelativeLayout) v.findViewById(R.id.link);
        }
    }

    public CardAdapter(Context context, List<Card> cardData) {
        this.context = context;
        this.cardData = cardData;
    }

    @Override
    public CardAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.card_layout, parent, false);

        ViewHolder vh = new ViewHolder(v);

        return vh;
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, int position) {
        Card card = cardData.get(position);

        holder.link.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mWebview  = new WebView(context);

                mWebview.getSettings().setJavaScriptEnabled(true);

                mWebview.loadUrl("http://www.google.com");
            }
        });
    }

    @Override
    public int getItemCount() {
        return cardData.size();
    }
}

正如您所看到的,我设置了如果用户点击了链接元素,则会创建一个新的WebView(并打开www.google.com)。

我的问题是,现在,它会在浏览器中打开链接,而不是在我的应用中打开。

我做错了什么?

4 个答案:

答案 0 :(得分:0)

替换您的代码,完成

@Override
    public void onBindViewHolder(final ViewHolder holder, int position) {
        Card card = cardData.get(position);

        holder.link.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

               holder.webView.getSettings().setJavaScriptEnabled(true);

               holder.webView.loadUrl("http://www.google.com");
            }
        });
    }

答案 1 :(得分:0)

加载WebView。

webView.setWebViewClient(new WebViewClient());

答案 2 :(得分:0)

Hello @ user7397971在适配器中添加此内容并尝试此操作。

imgad.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(getActivity(), WebviewActivity.class));
        }
    });

并添加此活动:WebviewActivity.class

公共类WebviewActivity扩展了Activity {

private WebView webview;

@Override
protected void onCreate(Bundle savedInstanceState) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_webview);
    getIds();
    webview.setVerticalScrollBarEnabled(true);
    WebSettings webSettings = this.webview.getSettings();
    webSettings.setJavaScriptEnabled(true);

}

@Override
protected void onPause() {

    super.onPause();
}

private void getIds() {
    try {
        final ProgressDialog pd = ProgressDialog.show(WebviewActivity.this, "", "Please wait", true);
        webview = (WebView) findViewById(R.id.WebViewurl);
        webview.loadUrl(GlobalField.WEBURL);
        webview.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                pd.show();
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onPageFinished(WebView view, final String url) {
                pd.dismiss();
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
   }

 }

并添加xml这个

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/background_color">


    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/view"
        android:layout_marginTop="@dimen/margin_5_cherish"
        android:fillViewport="true">

        <WebView
            android:id="@+id/WebViewurl"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="none" />

    </ScrollView>
</RelativeLayout>

答案 3 :(得分:0)

首先确保您在布局中有Webview。否则,这不会将您的webview绑定到您的布局,从而在浏览器而不是webview中打开URL。

另一个解决方案是打开一个新的Activity,其中包含webview,如上所述。通过intent将URL传递给下一个活动,OnCreate加载从intent

获取的URL