使用Intent显示URL

时间:2014-07-04 10:05:43

标签: android android-intent illegalstateexception

我在运行时收到错误。点击按钮时发生Logcat错误。

java.lang.IllegalStateException: Could not find a method onClickWebBrowser(View) in the activity class com.steph.intents.IntentActivity for onClick handler on view class android.widget.Button with id 'btn_webbrowser'

StackTrace:

 E/AndroidRuntime(1931): FATAL EXCEPTION: main
 E/AndroidRuntime(1931): Process: com.steph.intents, PID: 1931
 E/AndroidRuntime(1931): java.lang.IllegalStateException: Could not find a method onClickWebBrowser(View) in the activity class com.steph.intents.IntentActivity for onClick handler on view class android.widget.Button with id 'btn_webbrowser'
 E/AndroidRuntime(1931):    at android.view.View$1.onClick(View.java:3810)
 E/AndroidRuntime(1931):    at android.view.View.performClick(View.java:4438)
 E/AndroidRuntime(1931):    at android.view.View$PerformClick.run(View.java:18422)
 E/AndroidRuntime(1931):    at android.os.Handler.handleCallback(Handler.java:733)
 E/AndroidRuntime(1931):    at android.os.Handler.dispatchMessage(Handler.java:95)
 E/AndroidRuntime(1931):    at android.os.Looper.loop(Looper.java:136)
 E/AndroidRuntime(1931):    at android.app.ActivityThread.main(ActivityThread.java:5017)
 E/AndroidRuntime(1931):    at java.lang.reflect.Method.invokeNative(Native Method)
 E/AndroidRuntime(1931):    at java.lang.reflect.Method.invoke(Method.java:515)
 E/AndroidRuntime(1931):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
 E/AndroidRuntime(1931):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
 E/AndroidRuntime(1931):    at dalvik.system.NativeStart.main(Native Method)
 E/AndroidRuntime(1931): Caused by: java.lang.NoSuchMethodException: onClickWebBrowser [class android.view.View]
 E/AndroidRuntime(1931):    at java.lang.Class.getConstructorOrMethod(Class.java:472)
 E/AndroidRuntime(1931):    at java.lang.Class.getMethod(Class.java:857)
 E/AndroidRuntime(1931):    at android.view.View$1.onClick(View.java:3803)
 E/AndroidRuntime(1931):    ... 11 more

activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btn_webbrowser"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Web Browser"
        android:onClick="onClickWebBrowser"/>

</LinearLayout>

IntentActivity.java:

package com.steph.intents;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class IntentActivity extends Activity{

    Button btn_webbrowser;

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        btn_webbrowser=(Button)findViewById(R.id.btn_webbrowser);

        setContentView(R.layout.activity_main);
    }

    public void onclickWebBrowser(View view){
        Intent i=new Intent(android.content.Intent.ACTION_VIEW,Uri.parse("http://www.amazon.com"));
        startActivity(i);

    }

}     

任何人都可以帮助我。感谢你。

6 个答案:

答案 0 :(得分:5)

我认为你应该改变顺序

 setContentView(R.layout.activity_main); 
 btn_webbrowser=(Button)findViewById(R.id.btn_webbrowser);

首先,您需要setContentView(R.layout.activity_main);,然后引用您的View

答案 1 :(得分:3)

还有一件事,

在xml中你定义了

android:onClick="onClickWebBrowser"

和Java

public void onclickWebBrowser(View view)

查看案例差异,请编辑其中任何一个。

您获得Caused by: java.lang.NoSuchMethodException: onClickWebBrowser [class android.view.View]因为在java文件中您的方法名称是 onclickWebBrowser ,它应该是 onClickWebBrowser

答案 2 :(得分:2)

你可以尝试

package com.steph.intents;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class IntentActivity extends Activity{

    Button btn_webbrowser;

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_webbrowser=(Button)findViewById(R.id.btn_webbrowser);


    }

    public void onClickWebBrowser(View view){
        Intent i=new Intent(android.content.Intent.ACTION_VIEW,Uri.parse("http://www.amazon.com"));
        startActivity(i);

    }

}

注意 - 将方法名称更改为onClickWebBrowser(视图视图)

答案 3 :(得分:1)

首先设置视图内容,然后获取视图,然后更改

 btn_webbrowser=(Button)findViewById(R.id.btn_webbrowser);
 setContentView(R.layout.activity_main);

 setContentView(R.layout.activity_main);
 btn_webbrowser=(Button)findViewById(R.id.btn_webbrowser);

并将onclickWebBrowser更改为onClickWebBrowser,即

更改

public void onclickWebBrowser(View view){

public void onClickWebBrowser(View view){

因为在xml文件中onclick函数名是onClickWebBrowser

答案 4 :(得分:1)

您也可以尝试这样

public class IntentActivity extends Activity{

Button btn_webbrowser;

public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn_webbrowser=(Button)findViewById(R.id.btn_webbrowser);

     btn_webbrowser.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
         Intent i=new Intent(android.content.Intent.ACTION_VIEW,Uri.parse("http://www.amazon.com"));
        startActivity(i);
       }
    });
  }

}     

答案 5 :(得分:0)

我不确定你的OnCreate

但我有一些应用列表。

protected void openBrowser() {
    Uri uri = Uri.parse(txtURL.getText().toString());
    Intent i = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(i);

}