将参数从布局传递到活动

时间:2017-08-17 21:16:12

标签: android android-layout

我正在从谷歌创建的Udacity course学习Android开发,在练习中,它被要求为两个打篮球的球队创建一个得分记录。该应用程序看起来像:

enter image description here

你可以猜出每个按钮的功能....
为此,他们为每个按钮创建了6个方法(addThreePointToTeamA,addTwoPointToTeamA ...)。但我认为两个方法(addTeamA,addTeamB)就足够了,如果我可以传递一个int参数对应于要添加到每个方法的点数。
所以我想知道是否可以这样做?如果没有,为什么?
提前谢谢你
修改
这是我想做的事情: 在layout.xml中:

    <Button
    ...
    android:text="+3 POINTS"
    android:onClick="addThreeTeamA(3)"
    />

然后在MainActivity.java中:

public void addThreeTeamA(int point){
....
}

3 个答案:

答案 0 :(得分:3)

技术上可以只实现一个Click Listener,但不能按照您要求的方式实现,因为没有办法将参数传递给Click Click侦听器。相反,您需要为每个按钮定义KeyDown并使用此方法。

slider1_KeyDown

答案 1 :(得分:1)

答案很简单,你绝对可以做到。

我会说,考虑一下你的设计。

以下是我的建议:

// Setup an interface for common team behaviors
interface Team {
   void addPoints(int points);
   int getPoints();
}

// implement that interface per Team
class TeamA implements Team {

    private int points;

    public TeamA(){
       this.points = 0;
    }

    @Override
    public void addPoints(int points){
      this.points += points;
    }

    @Override
    public int getPoints(){
       return this.points;
    }

}

为TeamB做同样的事情!

然后在您的Activity或您要添加的调用的任何类中创建一个方法:

public void addPoints(int points, Team team){
    team.addPoints(points);
}

祝你好运,快乐的编码!

答案 2 :(得分:0)

他们创造了6种方法,以便您更好地理解。一旦你得到他们想要执行的东西,你就可以增强它。是的,您可以通过为团队A和团队B制作通用方法来增强它。它完全取决于你的逻辑。希望我回答你的问题。