Java Android Studio:如何通过单击同一片段上的按钮在WebView中加载片段上的url
我用英文读答案 我试过了,成功了。但是它打开了一个新的对话框,加载了url,这并不是我想要的 我希望url直接加载到我按钮下面的WebView元素中。所以基本上我有一个片段,我有EditText,Button和WebView元素都在片段中。我想做的是单击“搜索”按钮,并将url从EditText加载到位于按钮和EditBox元素正下方的WebView中。我不希望它打开我的浏览器或新对话框 我已经成功地将一些url自动加载到WebView中,当你转到应用程序上的那个片段时,但是当我试图在点击按钮时加载一些url时,应用程序正在崩溃。在制作此线程之前,我已经尝试过多次搜索此问题修复,但似乎没有人有相同的问题 以下是我的fragment_main.xml:Java Android Studio:如何通过单击同一片段上的按钮在WebView中加载片段上的url,java,android,android-fragments,webview,Java,Android,Android Fragments,Webview,我用英文读答案 我试过了,成功了。但是它打开了一个新的对话框,加载了url,这并不是我想要的 我希望url直接加载到我按钮下面的WebView元素中。所以基本上我有一个片段,我有EditText,Button和WebView元素都在片段中。我想做的是单击“搜索”按钮,并将url从EditText加载到位于按钮和EditBox元素正下方的WebView中。我不希望它打开我的浏览器或新对话框 我已经成功地将一些url自动加载到WebView中,当你转到应用程序上的那个片段时,但是当我试图在点击按钮时
<?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>
当我点击按钮时,应用程序崩溃。。即使经过长时间的研究,我也不知道问题出在哪里。顺便说一下,我对Android Studio非常陌生,非常感谢您的帮助。您在这里犯了错误
WebView webz=(WebView)view.findViewById(R.id.webV)代码>
在onClick(View视图)
View是被单击的按钮。所以你找不到任何Webview
和EditText
。
在onClick
内部,您可以在btn.setOnClickListener
之前将web
设置为final并初始化et
,而不是初始化webz
和et
下面是适用于您的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;
}
您在这里犯了错误WebView webz=(WebView)view.findViewById(R.id.webV)代码>
在onClick(View视图)
View是被单击的按钮。所以你找不到任何Webview
和EditText
。
在onClick
内部,您可以在btn.setOnClickListener
之前将web
设置为final并初始化et
,而不是初始化webz
和et
下面是适用于您的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;
}