如何调用Button ellement的另一个activity / class onClick()中定义的方法?

时间:2016-01-28 21:11:29

标签: java android android-studio

我正在使用Android Studio(最低API为15 )进行主要活动的布局,并在其上定义了一些XML按钮。

该程序的想法是通过添加,显示和清除一组按钮来编辑单词列表。 (有一个EditText用于添加,但这对于问题并不重要)。但是考虑到高内聚的想法,我已经定义了这个列表以及在另一个普通类中操作它的方法,这个类称为WordList(仍然扩展了Activity ),所以当试图调用按钮的onClick属性时,它找不到它们。

android:onClick="addWord"
  

'MainActivity'中缺少方法'addWord'或签名错误...

有没有办法从另一个类制作布局或单个元素点(或获取其数据上下文),或者是针对整个Android结构的那个,我应该把它放进去在原来的活动中?

3 个答案:

答案 0 :(得分:12)

您是否使用该方法的正确签名?

使用onClick属性定义的方法必须满足以下要求:

  • 必须公开
  • 必须具有无效返回值
  • 必须将View对象作为参数(这是单击的视图)

喜欢

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

答案 1 :(得分:4)

向按钮添加OnClickListener,而不是使用XML onClick属性。

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

答案 2 :(得分:0)

试试这个,它应该有效:

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实施

<?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 -->