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的连接