为什么按钮中的内容没有变化?

时间:2018-06-14 05:56:05

标签: android

我的项目单击两个按钮,显示今天按下按钮的次数。

单击A按钮时,显示在C按钮上按下按钮的次数。 然后单击B按钮显示在D按钮上按下按钮的次数。

我的来源

aBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       ClickCount();
    }
});

bBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       ClickCount();
    }
});

public void ClickCount() {
    Button cBtn = (Button) findViewById(R.id.cBtn);
     Button dBtn = (Button) findViewById(R.id.dBtn);
    //a button click count work
    //1,,2,,,3,,,4,
    cBtn.setText(String.valueOf(resultC));
    dBtn.setText(String.valueOf(resultD));
}

首先我尝试检查Log.d(TAG, resultC , resultD) 日志通常会增加。

setText只会增加计数结果C.

如果更改行dBtn和cBtn。

 dBtn.setText(String.valueOf(resultD));
 cBtn.setText(String.valueOf(resultC));

仅显示计数dBtn resultD。

日志在resultC和resultD中递增。 但显示结果。只有带有setText的resultC才会出现

如何解决这个问题?我基本上都知道这个问题。 但我不知道这个问题。

感谢。

3 个答案:

答案 0 :(得分:1)

  

它的发生是因为你没有增加resultC和的价值   resultD

     

所以试试这个:

aBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       resultC=resultC+1;
       ClickCount();
    }
});

bBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       resultD=resultD+1;
       ClickCount();
    }
});

public void ClickCount() {
    Button cBtn = (Button) findViewById(R.id.cBtn);
     Button dBtn = (Button) findViewById(R.id.dBtn);
    //a button click count work
    //1,,2,,,3,,,4,
    cBtn.setText(String.valueOf(resultC));
    dBtn.setText(String.valueOf(resultD));
}

答案 1 :(得分:0)

在类级别而不是本地函数级别声明Button

 Button cBtn;
 Button dBtn;

在onCreate()回调中初始化按钮而不是ClickCount()函数:

cBtn = (Button) findViewById(R.id.cBtn);
dBtn = (Button) findViewById(R.id.dBtn);

如果从函数返回计数并将其设置为onClickListener,如下所示:

aBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       int count=ClickCount();
       cBtn.setText(String.valueOf(count));
    }
});

bBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       int count=ClickCount();
       dBtn.setText(String.valueOf(count));
    }
});

答案 2 :(得分:0)

尝试以下代码

    aBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       ClickCount("a");
    }
});

bBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
       ClickCount("b");
    }
});

public void ClickCount(String key) {
    Button cBtn = (Button) findViewById(R.id.cBtn);
     Button dBtn = (Button) findViewById(R.id.dBtn);
    //a button click count work
    //1,,2,,,3,,,4,
    if(key.equalsIgnoreCase("a")){
       cBtn.setText(String.valueOf(resultC));
    }
    if(key.equalsIgnoreCase("b")){
    dBtn.setText(String.valueOf(resultD));
    }
}