How to call a method defined in another activity/class onClick() of a Button ellement?

匿名 (未验证) 提交于 2019-12-03 08:46:08

问题:

I am working on the Layout of my main activity with Android Studio (lowest API is 15), and have defined a few XML Buttons on it.

The idea of the program is to edit a list of words by adding to, displaying, and clearing it with a set of buttons. (There is an EditText for adding, but that's not important for the question). But with the idea of high cohesion in mind, I have defined this list and the methods that manipulate it in another plain class called WordList (which still extends Activity), and so when trying to invoke the onClick property of a button, it cannot find them.

android:onClick="addWord" 

Method 'addWord' is missing in 'MainActivity' or has incorrect signature...

Is there a way to make the layout, or the individual element point (or get its data context) from another class, or is that against the whole structure of Android and I should just put it in its original activity?

回答1:

Are you using the correct signature for the method?

Methods defines using the onClick attribute must meet the following requirements:

  • must be public
  • must have a void return value
  • must have a View object as parameter (which is the view that was clicked)

like

public void addWord(View view) {     //your action } 


回答2:

Add an OnClickListener to the button instead of using the XML onClick attribute.

https://stackoverflow.com/a/29479937/1496693



回答3:

Try this, it should work:

Button btn = (Button) findViewById(R.id.mybutton);  btn.setOnClickListener(new View.OnClickListener() {     @Override     public void onClick(View v) {         addWord(v);     } });  // some more code  public void addWord(View v) {     // does something very interesting } 

XML Implementation

<?xml version="1.0" encoding="utf-8"?> <!-- layout elements --> <Button android:id="@+id/mybutton"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="Click me!"     android:onClick="addWord" /> <!-- even more layout elements --> 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!