Java 如何根据用户在一个活动中单击的按钮(三个按钮中的一个)更改单个WebView(Android)的内容?

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的主要活动代码

嗨,我是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
       }