来自另一个类的Webview.loadurl

时间:2014-09-01 09:23:56

标签: android webview onclick

我已经设置了这样的网页视图

public class Webview extends Activity {

private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    final ProgressDialog pd = ProgressDialog.show(this, "", "Chargement en cours", true);
    setContentView(R.layout.activity_webview);
    webView = (WebView) findViewById(R.id.webview);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient()
    {
         public void onPageFinished(WebView view, String ur){ 
                pd.dismiss();
              }
            });



    String url = getIntent().getStringExtra("url");


}

我还有另一个类MainActivity

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 
}

public void ButtonOnClick(View v) {
    Intent intent = new Intent (MainActivity.this, Webview.class);
    switch(v.getId()) {     

    case R.id.button1:
        intent.putExtra("url", "http://www.google.fr");
    break;      
    case R.id.button2:
        intent.putExtra("url", "http://www.orange.fr");
    break;

       //and so on....

  }
    startActivity(intent);
    }

}

这是主要活动布局的摘录:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg"
   android:id="@+id/frontpage_view"
android:tag="front"
 >

   <LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="150dp"
    android:paddingRight="10dp"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/button1"
        android:layout_width="80dip"
        android:layout_height="wrap_content"
        android:layout_marginRight="15dp"
        android:drawableTop="@drawable/actualites"
        android:onClick="ButtonOnClick"
        android:text="Actualités"
        android:textColor="#fff"
        android:textSize="12sp"
        android:textStyle="bold"
        android:typeface="normal"
        android:background="@null"
         />

    <Button
        android:id="@+id/button2"
        android:layout_width="80dip"
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/agenda"
        android:text="Agenda"
        android:onClick="ButtonOnClick"
        android:textColor="#fff"
        android:textSize="12sp"
        android:textStyle="bold"
        android:typeface="normal"
        android:layout_marginRight="15dp"
        android:background="@null" />

我得到的消息webview无法解决,我是否需要在主要活动中声明webview? 我该怎么做?

4 个答案:

答案 0 :(得分:1)

您正在尝试访问不在MainActivity.java中的webview。所以你得到这个错误。按钮点击应该怎么做:

  1. 根据Webview.java的意图点击按钮传递网址
  2. 在第二项活动中相应地在webview中加载网址。
  3. 按点击按钮传递网址:

    switch(v.getId()) {
    
    
        case R.id.button1:
            Intent intent = new Intent (MainActivity.this, Webview.class);
            intent.putExtra("url", "http://www.google.fr");
            startActivity(intent);
        break;      
        case R.id.button2:
            Intent intent = new Intent (MainActivity.this, Webview.class);
            intent.putExtra("url", "http://www.google.fr");
            startActivity(intent);
        break;
    
           //and so on....
    
      }
    

    在你的Webview.java中:

    setContentView(R.layout.activity_webview);
    final ProgressDialog pd = ProgressDialog.show(this, "", "Chargement en cours", true);
    webView = (WebView) findViewById(R.id.webview);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.setWebViewClient(new WebViewClient());
    String url = getIntent().getStringExtra("url");
    webView.setWebViewClient(new WebViewClient(){
    
        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
        }   
    });
    webView.loadUrl(url);
    

    希望这很清楚。

答案 1 :(得分:0)

您无法从MainActivity中调用loadUrl,因为您尚未在其中声明。 您需要从此处开始您的webview活动,并在意图中传递要加载的URL。

答案 2 :(得分:0)

您需要启动Webview活动并将URL传递给它。

因此,要启动WebView Activity,您需要

switch(v.getId()) {

    case R.id.button1:
    Intent i = new Intent(MainActivity.this, WebView.class);   
    i.putExtra("URL", "http://www.google.fr");
    startActivity(i);
    break;      
    case R.id.button2:
    Intent i = new Intent(MainActivity.this, WebView.class);   
    i.putExtra("URL", "http://www.google.fr");
    startActivity(i);
    break;

   //and so on....
  }
}

并在您的WebView活动中

webView.loadUrl(getIntent().getExtras().getString("URL"));

不要忘记将WebView Activity放入清单文件中。

答案 3 :(得分:0)

代码非常好。 只需更改String url = getIntent().getStringExtra(url); 然后在下一行中添加webView.loarUrl(url);。 它对我有用。