java.lang.IllegalStateException:找不到父或祖先的方法上下文为android:onClick属性

时间:2017-04-12 08:53:10

标签: java android

我试图将onClick方法front()添加到我的Button。但是,当我单击Button时,它会返回以下错误:

java.lang.IllegalStateException: Could not find method front(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'front'

这是我的xml:

<Button
    android:id="@+id/front"
    android:onClick="front"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Text" />

Register.java:

public class Register extends AppCompatActivity {

    private Button front;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        front = (Button) findViewById(R.id.front);
    }

    private void front(View v) {
        Toast.makeText(Register.this, "String", Toast.LENGTH_LONG).show();
    }

}

知道问题是什么吗?

3 个答案:

答案 0 :(得分:2)

您活动中的front method公开。你现在把它变成了私人。

这也在Android Developer网站中进行了描述。

  

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

public void front(View v) {
    Toast.makeText(Register.this, "String", Toast.LENGTH_LONG).show();
}

答案 1 :(得分:0)

这是按钮活动的点击操作。

front.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(this, "String", Toast.LENGTH_LONG).show();

            }
        });

通过xml onClick

提供按钮操作
public void front(View v) {
                Toast.makeText(this, "String", Toast.LENGTH_LONG).show();
}

答案 2 :(得分:0)

确保正确编写属性值 onClick 的语法。就我而言,我忘记了字符}

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:clickable="true"
    android:focusable="true"
    android:onClick="@{() -> viewModel.onItemClick(position)}">

GL