gpt4 book ai didi

java - Android Studio : How can I load url in WebView on fragment by clicking a button on the same fragment

转载 作者:行者123 更新时间:2023-12-02 01:45:10 26 4
gpt4 key购买 nike

我在 this thread 中阅读了答案

我尝试了一下,成功了。但它所做的是打开了一个新的对话框,其中加载了网址,而这并不完全是我想要的。

我希望将 URL 直接加载到按钮下方的 WebView 元素中。所以基本上我拥有的是一个 fragment ,并且该 fragment 内有 EditText、Button 和 WebView 元素。我想要做的是单击“搜索”按钮并将 URL 从 EditText 加载到位于按钮和 EditBox 元素正下方的 WebView 中。我不希望它打开我的浏览器或新对话框。

当您转到应用程序上的该 fragment 时,我已经成功地自动将一些 url 加载到 WebView 中,但是当我尝试在单击按钮时加载一些 url 时,应用程序崩溃了。在创建此线程之前,我已经尝试多次搜索此问题的修复程序,但似乎没有人遇到相同的问题。

这是我的fragment_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Main">

<!-- TODO: Update blank fragment layout -->

<WebView
android:id="@+id/webV"
android:layout_width="match_parent"
android:layout_height="463dp"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginStart="0dp"
android:layout_marginLeft="0dp"
android:layout_marginTop="48dp" />

<Button
android:id="@+id/searchBtn"
android:layout_width="99dp"
android:layout_height="43dp"
android:layout_alignParentTop="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_marginTop="0dp"
android:layout_marginEnd="7dp"
android:layout_marginRight="7dp"
android:text="@string/search" />

<EditText
android:id="@+id/SVbox"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/search_url"
android:inputType="text|textPersonName"
android:autofillHints="" />

</RelativeLayout>

在 Main.java (我的 fragment 的 java 文件)中,我尝试了以下操作:

package com.something.Something;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;

/**
* A simple {@link Fragment} subclass.
*/
public class Main extends Fragment {



public Main() {
//Required empty public constructor

}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_main, container, false);

WebView web = (WebView) view.findViewById(R.id.webV);
web.setWebViewClient(new WebViewClient());
web.loadUrl("http://randomsite.com");
Button btn = (Button) view.findViewById(R.id.searchBtn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
EditText et = (EditText) view.findViewById(R.id.SVbox);
WebView webz = (WebView) view.findViewById(R.id.webV);
webz.setWebViewClient(new WebViewClient());
webz.loadUrl("" + et.getText());
}
});
return view;

}



}

当我点击按钮时,应用程序崩溃了。即使经过长时间的研究,我也不知道问题是什么。顺便说一句,我对 Android Studio 还很陌生,非常感谢您的帮助。

最佳答案

你在这里犯了错误WebView webz = (WebView) view.findViewById(R.id.webV);onClick(View view) view 是被点击的按钮。所以你不会找到任何 WebviewEditText 。里面onClick ,而不是初始化webzet你可以做web最终并初始化et之前btn.setOnClickListener

以下是onCreateView的更新代码这对你有用。

 public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_main, container, false);

final WebView web = (WebView) view.findViewById(R.id.webV);
web.setWebViewClient(new WebViewClient());
web.loadUrl("http://randomsite.com");
final Button btn = (Button) view.findViewById(R.id.searchBtn);
final EditText et = (EditText) view.findViewById(R.id.SVbox);

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
web.loadUrl(et.getText().toString());
}
});
return view;

}

关于java - Android Studio : How can I load url in WebView on fragment by clicking a button on the same fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53781514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com