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

Android 在浏览器中而不是在我的应用程序中打开WebView,android,android-layout,android-webview,Android,Android Layout,Android Webview,我有一个将数据添加到布局的适配器。布局的元素之一是链接。如果用户单击此元素,我希望它在WebView中打开链接 现在,我有以下代码: public class CardAdapter extends RecyclerView.Adapter<CardAdapter.ViewHolder> { private Context context; private List<Card> cardData; private WebView mWebvi

我有一个将数据添加到布局的适配器。布局的元素之一是链接。如果用户单击此元素,我希望它在
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();
    }
}
公共类CardAdapter扩展了RecyclerView.Adapter{ 私人语境; 私人名单数据; 私有网络视图; 公共静态类ViewHolder扩展了RecyclerView.ViewHolder{ 公共关系链接; 公共视图持有者(视图v){ 超级(五); link=(RelativeLayout)v.findViewById(R.id.link); } } 公共CardAdapter(上下文上下文、列表cardData){ this.context=上下文; this.cardData=cardData; } @凌驾 public CardAdapter.ViewHolder onCreateViewHolder(视图组父级,int-viewType){ 视图v=LayoutInflater.from(parent.getContext()) .充气(R.layout.card_layout,父级,假); 视窗支架vh=新视窗支架(v); 返回vh; } @凌驾 公共无效onBindViewHolder(最终ViewHolder,内部位置){ Card Card=cardData.get(位置); holder.link.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ mWebview=新的WebView(上下文); mWebview.getSettings().setJavaScriptEnabled(true); mWebview.loadUrl(“http://www.google.com"); } }); } @凌驾 public int getItemCount(){ 返回cardData.size(); } } 如您所见,我已经设置好,如果用户单击link元素,它将创建一个新的
WebView
(并打开
www.google.com

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


我做错了什么?

替换您的代码,完成

@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");
            }
        });
    }

要在您的WebView中加载

webView.setWebViewClient(new WebViewClient());

Hello@user7397971将此添加到适配器中并尝试此操作

imgad.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(getActivity(), WebviewActivity.class));
        }
    });
并添加此活动:WebviewActivity.class

公共类WebviewActivity扩展了活动{

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>

首先,确保版面中有一个Webview。否则,这不会将您的Webview绑定到版面,从而在浏览器而不是Webview中打开url


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

单击元素时,我会出现以下错误:
E/chromium:[错误:interface_registry.cc(104)]未能找到接口的绑定器:autofill::mojom::PasswordManagerDriver
W/cr\u BindingManager:无法调用determinedVisibility()-从未看到pid:4963的连接