方法签名不正确

时间:2016-03-16 20:05:09

标签: android-studio

尽管在Java文件MainActivity中声明了onButtonHomeClick方法,但当我尝试在XML中引用该方法时,我收到错误消息:“MainActivity中的方法onButtonHomeClick具有错误的签名”。它们都在下面,我不能为我的生活找出它为什么会返回这样的错误,特别是因为尝试通过Ctrl单击导航到XML类文件中的按钮导航到声明导航到Java类中的方法。登记/> 并且它肯定很难找到该方法,因为Android监视器在尝试将行为分配给按钮时返回致命错误。

<!-- XML file -->
<item
        android:id="@+id/button_home"
        android:orderInCategory="100"
        android:icon="@drawable/home"
        android:title="Home"
        android:onClick="onButtonHomeClick"
        app:showAsAction="always"
    />

//Java method
public void onButtonHomeClick(View v){
    Intent intent = new Intent(this, MainActivity.class);

}

6 个答案:

答案 0 :(得分:8)

清除您的项目并确保将onButtonHomeClick()方法声明为public void

答案 1 :(得分:1)

您的点击方法包含MenuItem的无效参数。对于MenuItem,它是

public void onClickMethod(MenuItem menuItem) {
    // Your code here
}

public void onClickMethod(View view) {...}适用于您的活动布局中的View

同样,仅创建Intent将无法启动Activity。要开始活动,您应该将意图传递给startActivity()

答案 2 :(得分:0)

您需要在方法中添加startActivity(intent);,因此它应该是这样的:

public void onButtonHomeClick(View v){
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
}

我尝试了包含startActivity(intent);的代码,但效果很好

答案 3 :(得分:0)

在科特林:

curl -X POST http://localhost:8080/api/experimental/dags/<dag_id>/dag_runs -H 'Cache-Control: no-cache' -H 'Content-Type: application/json'    -d '{"conf":"{\"key\":\"value\"}"}'

在您的活动中创造有趣的onClick

   <android.support.v7.widget.AppCompatButton
    android:id="@+id/mRecharge_btn"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:onClick="onClick"
    android:textSize="18sp" />

答案 4 :(得分:0)

还必须为所有视图定义android: onClick方法。请记住,所有视图中的单击方法名称都相同。

<RadioGroup
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layoutDirection="rtl" >

    <RadioButton
        android:id="@+id/radioButton_score"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Score"
        android:onClick="OnClickView"/>

    <RadioButton
        android:id="@+id/radioButton_discoun_percent"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Discoun Percent"
        android:onClick="OnClickView" />
</RadioGroup>
public void OnClickView(View view) {
    switch(view.getId()){
        case R.id.radioButton_score:
            Toast.makeText(this, "click Score", 
                                Toast.LENGTH_SHORT).show();
            break;
        case R.id.radioButton_discoun_percent:
            Toast.makeText(this, "click Discoun Percent", 
                                 Toast.LENGTH_SHORT).show();
            break;
    }
}

答案 5 :(得分:-1)

您是否记得在MainActvity.java文件中包含View类的导入? (默认情况下不会导入。)

import android.view.View;