为什么动态添加的按钮没有收到输入?

时间:2019-04-18 16:03:36

标签: java android

我正在开发一个应用程序,它是一个简单的纸牌游戏,我在视图上以动态方式添加了一个按钮,该按钮代表游戏的纸牌,但是当它是时,此按钮不接收任何输入按下。 问题是:为什么按钮没有收到任何输入?

我已经尝试使用日志来打印消息,但是什么也没打印。

public class MainActivity extends AppCompatActivity {

private Banco banco;

private Giocatore giocatore1;
private Giocatore giocatore2;
private Giocatore giocatoreAttuale;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    giocatore1 = new GiocatoreUmano();
    giocatore2 = new GiocatoreUmano();

    banco = new Banco(giocatore1,giocatore2);
    giocatoreAttuale=giocatore1;
    DaiCarteAiGiocatori();
    DaiCarteAlPlayerOne();
}

private void DaiCarteAlPlayerOne(){

    Button primaCarta = new Button(this);  //BUTTON OF THE CARD
    primaCarta.setText(giocatore1.getCartaByIndex(0).getSeme().toString()+":"+giocatore1.getCartaByIndex(0).getValore());

    ConstraintLayout layout = findViewById(R.id.baseLayout);
    layout.addView(primaCarta);

      Animation animation = AnimationUtils.loadAnimation(this, R.anim.move_cards); // THE ANIMATION
      primaCarta.startAnimation(animation);

//when the button is pressed the log should print the message of the card

     primaCarta.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            banco.giocaCarte(giocatore1,giocatore1.getCartaByIndex(0));
            Log.i("CARTA","Carta Premuta");
        }
    });


}
private void DaiCarteAiGiocatori(){
    banco.pescaCarte();
}

}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

//!!!评论的三个地方查看我的更改

   public class MainActivity extends AppCompatActivity implements View.OnClickListener { //!!!

    private Banco banco;

    private Giocatore giocatore1;
    private Giocatore giocatore2;
    private Giocatore giocatoreAttuale;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        giocatore1 = new GiocatoreUmano();
        giocatore2 = new GiocatoreUmano();

        banco = new Banco(giocatore1,giocatore2);
        giocatoreAttuale=giocatore1;
        DaiCarteAiGiocatori();
        DaiCarteAlPlayerOne();
    }

    private void DaiCarteAlPlayerOne(){

        Button primaCarta = new Button(this);  //BUTTON OF THE CARD
        primaCarta.setOnClickListener(MainActivity.this); //!!!
    primaCarta.setText(giocatore1.getCartaByIndex(0).getSeme().toString()+":"+giocatore1.getCartaByIndex(0).getValore());

        ConstraintLayout layout = findViewById(R.id.baseLayout);
        layout.addView(primaCarta);

          Animation animation = AnimationUtils.loadAnimation(this, R.anim.move_cards); // THE ANIMATION
          primaCarta.startAnimation(animation);



    }

    //!!!
    @Override
        public void onClick(View v) {
     banco.giocaCarte(giocatore1,giocatore1.getCartaByIndex(0));
                Log.i("CARTA","Carta Premuta");
        }

    private void DaiCarteAiGiocatori(){
        banco.pescaCarte();
    }