Java 如何根据用户在一个活动中单击的按钮(三个按钮中的一个)更改单个WebView(Android)的内容?
嗨,我是Android开发和StackOverflow的新手 我有一个Android WebView应用程序,其中一个“启动活动”(只是介绍文本和一个启动主意图的按钮)启动我的WebView活动,该活动加载一个URL(在onCreate方法中) 在这个主要活动中,我有三个按钮,其中一个按钮在当前活动中打开相同的URL(有效地刷新页面)。另外两个按钮我想在同一个WebView活动中打开两个不同的URL,我想知道这是否/如何可能 以下是ReadWebpageAsyncTask.java的主要活动代码:Java 如何根据用户在一个活动中单击的按钮(三个按钮中的一个)更改单个WebView(Android)的内容?,java,android,url,webview,onclick,Java,Android,Url,Webview,Onclick,嗨,我是Android开发和StackOverflow的新手 我有一个Android WebView应用程序,其中一个“启动活动”(只是介绍文本和一个启动主意图的按钮)启动我的WebView活动,该活动加载一个URL(在onCreate方法中) 在这个主要活动中,我有三个按钮,其中一个按钮在当前活动中打开相同的URL(有效地刷新页面)。另外两个按钮我想在同一个WebView活动中打开两个不同的URL,我想知道这是否/如何可能 以下是ReadWebpageAsyncTask.java的主要活动代码
public class ReadWebpageAsyncTask extends Activity {
private WebView browser;
protected String urlStrOne = "url one";
protected String urlNewCourses = "url two";
protected String urlFutureCourses = "url three";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_read_webpage_async_task);
browser = (WebView)findViewById(R.id.WebView01);
browser.setWebViewClient(new MyBrowser());
browser.loadUrl(urlStrOne);
}
@SuppressLint("SetJavaScriptEnabled")
public void onClick(View view){
browser.getSettings().setLoadsImagesAutomatically(true);
browser.getSettings().setJavaScriptEnabled(true);
browser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
browser.loadUrl(urlStrOne);
}
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView browser, String urlStrOne) {
browser.loadUrl(urlStrOne);
return true;
}
}
@Override
// Detect when the back button is pressed
public void onBackPressed() {
if(browser.canGoBack()) {
browser.goBack();
} else {
// Let the system handle the back button
super.onBackPressed();
}
}
}
以及相应的XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="left|right"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/black">
<Button
android:id="@+id/readWebpage"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_toLeftOf="@+id/soon"
android:background="@+drawable/custom_button_one"
android:onClick="onClick"
android:text="@string/load_page" />
<Button
android:id="@+id/exitapp01"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/soon"
android:background="@+drawable/custom_button_one"
android:onClick="exitButton"
android:text="@string/exit_button" />
<Button
android:id="@+id/soon"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_toLeftOf="@+id/exitapp01"
android:layout_toRightOf="@+id/readWebpage"
android:layout_alignParentTop="true"
android:onClick="comingSoon"
android:text="@string/future_courses" />
</RelativeLayout>
<WebView
android:id="@+id/WebView01"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="@string/WebView01" >
</WebView>
</LinearLayout>
另外,请原谅所有东西的糟糕命名,我不久前写了这篇文章,还没来得及改变它
为了澄清,首先加载的主URL与按钮“readWebpage”相同,我希望在单击按钮“exitapp01”(我可以说,我是一个noob)和“soon”时加载的其他两个URL。您可以将
OnClickListener
添加到按钮中,并根据具体情况切换URL:
public class ReadWebpageAsyncTask extends Activity implements OnClickListener{
private WebView browser;
protected String urlStrOne = "url one";
protected String urlNewCourses = "url two";
protected String urlFutureCourses = "url three";
Button reload, exit, soon;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_read_webpage_async_task);
browser = (WebView)findViewById(R.id.WebView01);
browser.setWebViewClient(new MyBrowser());
browser.loadUrl(urlStrOne);
reload = (Button)findViewById(R.id.readWebpage);
exit = (Button)findViewById(R.id.exitapp01);
soon = (Button)findViewById(R.id.soon);
reload.setOnClickListener(this);
exit.setOnClickListener(this);
soon.setOnClickListener(this);
}
@SuppressLint("SetJavaScriptEnabled")
public void onClick(View view){
}
@Override
public void onClick(View view) {
switch(view.getId()) {
case R.id.readWebpage:
browser.getSettings().setLoadsImagesAutomatically(true);
browser.getSettings().setJavaScriptEnabled(true);
browser.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
browser.loadUrl(urlStrOne);
break;
case R.id.exitapp01:
//Do whatever you want with this button
break;
case R.id.soon:
//Do whatever you want with this button
break;
}
}
}
并从xml中删除所有的android:onClick=”“
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="left|right"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/black">
<Button
android:id="@+id/readWebpage"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"/>
<Button
android:id="@+id/exitapp01"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_centerInParent="true"/>
<Button
android:id="@+id/soon"
android:layout_width="100dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"/>
</RelativeLayout>
<WebView
android:id="@+id/WebView01"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
如果按钮处于活动状态,则必须在所有按钮上设置onClick Listener,并在onClick()中执行以下操作: @凌驾 公共void onClick(视图){ //终端开关 }
//您还需要在活动的类定义处编写implements OnClickListener非常感谢CarlosJimenez的提示回复,我现在正在实现您的代码,遇到错误:“类型视图中的方法setOnClickListener(View.OnClickListener)不适用于参数(ReadWebpageAsyncTask)”,不确定我是做错了什么,还是忘记导入了什么?你在课堂上添加了这一行吗<代码>公共类ReadWebpageAsyncTask扩展活动实现OnClickListener我尝试过,因为Eclipse也建议了这一点,当我在Genymotion emulator上测试时,它在运行时导致了一个致命的异常。异常是什么?07-25 17:06:57.308:E/AndroidRuntime(1808):java.lang.IllegalStateException:RelativeLayout中不能存在循环依赖项
switch(view.getId()) {
case R.id.[Your first button Id]:
{
//Functionality
}
case R.id.[Your Second button Id]:
{
//Functionality
}
case R.id.[Your first button Id]:
{
//Functionality
}