How to solve error: Could not find method onClick(View) in a parent or ancestor Context for android:onClick

Please rename onClick method to anything other than that, Android thinks you are calling the internal onClick from View.java exposed via OnClickListener interface

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Random Game"
    android:id="@+id/button_random"
    android:layout_gravity="center_horizontal"
    android:onClick="myOnClick" />

and in your Activity

public class StartActivity extends AppCompatActivity {

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

        public void myOnClick(View v) {
          Log.d("DEBUG", "CLICKED " + v.getId());
        }
}

You can check the View documentation here


I had the same problem and in my case, I changed Button in XML to android.support.v7.widget.AppCompatButton and it worked.

Code with Error:

 <Button
        .... />

Fixed Code:

 <android.support.v7.widget.AppCompatButton
        .... />

In my case I missed closing bracket at the end.

android:onClick="@{(v) -> CommentHandler.selectGallery(v)".

It should be like this.
        android:onClick="@{(v) -> CommentHandler.selectGallery(v)}".

Tags:

Java

Xml

Android