按钮onClick错误...找不到方法

时间:2014-10-29 13:17:34

标签: java android android-activity buttonclick

我似乎无法从我的Activity开始新Button,我在这里搜索了答案,但似乎无法解决问题。我希望有人有一个简单的解决方案。在此先感谢。

这是错误:

E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not find a method openSearch(View) in the 
activity class dk.mathias.splitcab.MainActivity 
for onClick handler on view class android.widget.Button with id 'btnStartSearch'

MainActivity.java

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

}

public void openSearch(){
    Intent openSearchIntent = new Intent(MainActivity.this, StartSearch.class);
    startActivity(openSearchIntent);
}

的AndroidManifest.xml

    <activity
        android:name=".StartSearch"
        android:label="@string/title_activity_start_search" >
        <intent-filter>
            <action android:name="dk.mathias.splitcab.STARTSEARCH" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

activity_main.xml中

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/StartSearch"
    android:id="@+id/btnStartSearch"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignRight="@+id/tvWelcome"
    android:layout_alignEnd="@+id/tvWelcome"
    android:onClick="openSearch"

    />

StartSearch.java

public class StartSearch extends Activity {

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

2 个答案:

答案 0 :(得分:6)

问题在于您的方法签名

public void openSearch(){

它应该有一个,只有一个参数,即View

将其更改为

public void openSearch(View v){

v显然可以是您想要的任何内容,但您应该使其成为有意义的内容,例如vview等......

From the Docs

  

为了使其正常工作,该方法必须是公共的,并接受View作为其唯一参数。

See this answer有关添加ButtonsOnClick

的详细说明

答案 1 :(得分:1)

首先引用您的按钮

    search = (Button) findViewById(R.id.btnStartSearch);

然后为按钮实现onClick列表器,如下所示

        search.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

             Intent openSearchIntent = new Intent(MainActivity.this, StartSearch.class);
             startActivity(openSearchIntent)
        }
    });

确保从XML文件中删除此行

 android:onClick="openSearch"