gpt4 book ai didi

java - 按钮未更新其文本

转载 作者:行者123 更新时间:2023-12-02 06:01:51 25 4
gpt4 key购买 nike

我正在开发一款 Android 游戏。当应用程序启动时,它会显示一个按钮(“开始”)来开始游戏。当用户失败时,应用程序应显示原始 View 并将按钮文本更改为“重新启动”。当我启动应用程序时,一切正常,但当用户丢失时,我得到原始 View (按钮文本未更改),甚至按钮没有响应。我有两个类:GameActivity 和 GameView:在 GameActivity 中我有这个:

 protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
}

public void init() {
setContentView(R.layout.activity_catch_game);
fruitView = (CatchGameView) findViewById(R.id.l3InfoCatchGameView1);
fruitView.setActivity(this);
if (bStart == null) { //When we launch the app
bStart = (Button) findViewById(R.id.start);

bStart.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
buttonStartClickEventHandler();

}

});
} else{
bStart.setText("Restart");
}

}

在 GameView 中我有这个:

private void showScore() {
stopTimer();
AlertDialog.Builder popupBuilder = new AlertDialog.Builder(
this.getContext());
TextView message = new TextView(this.getContext());
message.setText("Score : " + score);
message.setGravity(Gravity.CENTER_HORIZONTAL);
popupBuilder.setView(message);
popupBuilder.setCancelable(true);
popupBuilder.setNeutralButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
invalidate();
activity.init();
}
});
popupBuilder.show();

}

当我调试时,我看到更改按钮文本的指令被执行。感谢您的帮助

最佳答案

问题是你的init()方法调用setContentView() .

当您执行此操作时, Activity 的布局将重新膨胀。对 View 的所有引用(例如 bstart )现在都指向旧布局副本中的 View ,该副本现在对用户不再可见。

bstart但仍在引用某些内容,if (bStart == null)为 false,您不会获得对 bstart 的更新引用.

我会将更新按钮文本的逻辑与设置 Activity 布局的逻辑分开。

关于java - 按钮未更新其文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22611098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com