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

Android 为什么按钮中的内容没有变化?,android,Android,“我的项目”单击“两个”按钮时,显示今天按下按钮的次数 单击按钮时,显示在C按钮上按A按钮的次数。 然后单击B按钮,显示a按钮在D按钮上被按下的次数 我的消息来源 aBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ClickCount(); } }); bBtn.setOnClickListener(new View.On

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

单击按钮时,显示在C按钮上按A按钮的次数。 然后单击B按钮,显示a按钮在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
只增加计数结果

如果更改行dBtn和cBtn

 dBtn.setText(String.valueOf(resultD));
 cBtn.setText(String.valueOf(resultC));
仅显示计数dBtn结果

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

如何解决这个问题?我对这个问题非常了解。 但我不知道这个问题


谢谢。

将按钮声明为类级别,而不是本地函数级别

 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));
    }
});
试试下面的代码

    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));
    }
}
这是因为您没有增加resultC和 结果

所以试试这个:


将其移动到onCreate
Btn=(按钮)findViewById(R.id.cBtn);dBtn=(按钮)查找dviewbyd(R.id.dBtn)
并将btn和dBtn声明为类成员。您在哪里增加resultD和resultC?您没有显示如何增加和记录您的值。@Raghunandan resultC和resultD在
ClickCount()上增加。
cBtn,dBtn已经是成员变量。@hyunwookcho这样就不需要每次单击都初始化按钮。您可以添加更多的代码吗?喜欢整个文件吗?这里没有什么问题,只是用户每次点击都会有按钮。@VladyslavMatviienko我不认为这能解决问题,但这是常识和最佳实践。每次单击另一个按钮时,他都在访问和检索按钮。@LucaNicoletti Yupthen请不要回答任何不能解决问题的问题。答案应该只包含解决方案。对于所有其他内容,请使用注释
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));
}