Android 为什么按钮中的内容没有变化?
“我的项目”单击“两个”按钮时,显示今天按下按钮的次数 单击按钮时,显示在C按钮上按A按钮的次数。 然后单击B按钮,显示a按钮在D按钮上被按下的次数 我的消息来源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
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));
}