使用android:onClick in XML需要参数的调用方法

时间:2014-11-28 15:55:25

标签: android xml onclick

我有一个Button,它是用XML定义的。我使用android:onClick来调用名为showMessage的方法。简单的方法示例:

    public void showMessage(View v){
    Log.w(TAG, "Hi");
    }

现在假设我的方法需要例如布尔 int 作为参数,如何执行以下操作:

android:onClick="showMessage(boolean isExpensive, int money)"

3 个答案:

答案 0 :(得分:9)

无法像您一样传递参数,但您可以使用标记:

<Button 
    android:id="@+id/btn1"
    android:tag="false,25"
    android:onClick="showMessage"
/>

<Button 
    android:id="@+id/btn2"
    android:tag="true,50"
    android:onClick="showMessage"
/>

并在你的java中:

public void showMessage(View v) {
    String tag = v.getTag().toString();
    boolean isExpensive = Boolean.parseBoolean(tag.split(",")[0]);
    int money = Integer.parseInt(tag.split(",")[1]);
    this.showMessage(isExpensive, money);
}

public void showMessage(boolean isExpensive, int money) {
    // Your codes here
}

答案 1 :(得分:1)

使用onclicklistener会不会更容易?

定义id为

的按钮
        <Button
        android:id="@+id/button1"
        /.. more attributes here ../
        android:text="@string/something" />

并在您的活动中:

Button button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {          
    @Override
    public void onClick(View v) {
        Log.w(TAG, "Hi");
        }});

答案 2 :(得分:0)

你可以这样做:  在没有参数的activity.java中定义另一个函数。 通过单击按钮调用此功能。

使用您想要传递的参数来实现您的实际功能。

public void showMessageToClick(View v){
    // define your bool as per your need
    boolean isExpensive = true;
    int money=30000;

    showMessage(isExpensive, money)
    Log.w(TAG, "Hi");
} 

showMessage(boolean isExpensive, int money){
   // your code here
}