在按钮单击时将对象作为参数传递

时间:2012-08-27 18:45:29

标签: android

我刚刚开始学习Android,我有一个简单的问题。我有一个单独的类Team,其中有3个变量(String name,int goals,int points)。在我的主要活动中,我希望在单击按钮后增加每个Team对象的目标和/或点数。目前我有一个方法:

        public void updatePoints(View v, Team t){
        t.points++;
        }

在我的xml文件中我有:

android:onClick="updatePoints"

与Button有关。我可以像上面一样传递Team对象吗?如果是这样,怎么办呢? 正如我所说,我只是开始学习Android所以任何建议都会受到赞赏。

干杯

4 个答案:

答案 0 :(得分:2)

用于在XML中定义的 onClick 侦听器的方法的签名必须

public void myMethod(View v)

否则将无法找到。

然后,您可以在此方法中执行任何操作,例如调用updatePoints()。 如果您想维护团队和视图之间的关系,可以使用setTag()

例如:

button.setTag("com.example.team", myTeam);

然后在onClick方法

public void myMethod(View v) {
   ((Team)v.getTag("com.example.team")).points++;
}

答案 1 :(得分:1)

您可以将Team声明为您班级中的变量:

private Team myTeam;

然后,创建您的方法:

public void updatePoints(View v){
        myTeam.points++;
}

使用类变量。

答案 2 :(得分:1)

如果你有......

android:onClick="updatePoints" // in XML file

然后在你的java文件中你需要定义...

public void updatePoints(View v){   
    // This is where you update each team

    // I think v.getId() retrieves the id of the button (or view) that was clicked
}

我假设你的活动中有......

团队[]; //一系列团队(不止一个),所以你需要做一些事情来确定你想要更新的团队......所以我要改变你对团队的定义

public class Team {
    public int identity; // This is the new field
    public String name;
    public int goals;
    public int points;
}

虽然你可以,我不会使用tag属性来识别团队......我会使用身份字段来识别各个团队。这样一个团队没有链接/绑定一个按钮...更多功能恕我直言

答案 3 :(得分:0)

您需要为该按钮创建事件侦听器,以便在单击时执行某些操作,然后您需要创建该Team类的对象,然后您只需在该类中调用updatePoints方法。