Android Studio:如何使用文本视图始终显示更新变量?

发布于 2025-02-04 01:05:02 字数 3074 浏览 2 评论 0原文


Android Studio代码按预期运行。但是,由于这是一个闲置的游戏,因此在后台提出了积分。单击方法仅显示在上次点击时提出的点。我需要始终显示的要点。

我一直在测试此新的添加代码,但是当单击按钮时,这些点没有更新。照片中的示例。进化点= 0;单击方法是更新,但是背景中也有一些点需要显示,而无需单击按钮。有什么建议吗?

visibletotals.setText("Evolutions Points: " + clicks);

完整代码供参考

package com.example.idleclicker;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    import java.util.Timer;
    import java.util.TimerTask;
    
    
    public class MainActivity extends AppCompatActivity {
    
        TextView points;
    TextView visibletotals;
        Button click;
        Button upgradebtn;
        TextView Leveltext;
    int clicks = 0;
    int clickcost = 10;
    int upgradelevel = 1;
        Timer myTimer = new Timer();
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            click = (Button) findViewById(R.id.click);
            points = (TextView) findViewById(R.id.points);
            upgradebtn = (Button) findViewById(R.id.upgradebtn);
            Leveltext = (TextView) findViewById(R.id.leveltext);
            visibletotals = (TextView) findViewById(R.id.visibletotals);
    
    
            visibletotals.setText("Evolutions Points: " + clicks);
    
    
            click.setEnabled(true);
    
            upgradebtn.setEnabled(true);
    
            myTimer.schedule(new TimerTask() {
                                 @Override
                                 public void run() {
                                     clicks+= upgradelevel;
    
                                 }
                             }, 0, 1000);
    
    
    
            click.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            clicks++;
                            points.setText(getResources().getString(R.string.evol) + clicks);
    
                        }
    
    
                    });
    
            upgradebtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (clicks >= clickcost) {
    
                        clicks -= clickcost;
    
                        upgradelevel += 1;
    
                        clickcost *= 2;
                        upgradebtn.setText(getResources().getString(R.string.Upgrade) +
                                clickcost +
                                getString(R.string.LevelText)
                                + upgradelevel);
    
                    };
                }
    
                });
    
    
        }}

enter image description here
The android studio code works as intended. However, points are made in the background since it's an idle game. An on click method only shows the points that were made as of the last click. I need the points to be shown at all times.

I have been testing this new added bit of code but the points are not updating when the button is clicked. Example in photo. Evolution Points = 0; The on click method is updating but there are also points made in the background that need to be shown without a button click. Any suggestions?

visibletotals.setText("Evolutions Points: " + clicks);

full code for reference

package com.example.idleclicker;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.TextView;
    
    import java.util.Timer;
    import java.util.TimerTask;
    
    
    public class MainActivity extends AppCompatActivity {
    
        TextView points;
    TextView visibletotals;
        Button click;
        Button upgradebtn;
        TextView Leveltext;
    int clicks = 0;
    int clickcost = 10;
    int upgradelevel = 1;
        Timer myTimer = new Timer();
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            click = (Button) findViewById(R.id.click);
            points = (TextView) findViewById(R.id.points);
            upgradebtn = (Button) findViewById(R.id.upgradebtn);
            Leveltext = (TextView) findViewById(R.id.leveltext);
            visibletotals = (TextView) findViewById(R.id.visibletotals);
    
    
            visibletotals.setText("Evolutions Points: " + clicks);
    
    
            click.setEnabled(true);
    
            upgradebtn.setEnabled(true);
    
            myTimer.schedule(new TimerTask() {
                                 @Override
                                 public void run() {
                                     clicks+= upgradelevel;
    
                                 }
                             }, 0, 1000);
    
    
    
            click.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            clicks++;
                            points.setText(getResources().getString(R.string.evol) + clicks);
    
                        }
    
    
                    });
    
            upgradebtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (clicks >= clickcost) {
    
                        clicks -= clickcost;
    
                        upgradelevel += 1;
    
                        clickcost *= 2;
                        upgradebtn.setText(getResources().getString(R.string.Upgrade) +
                                clickcost +
                                getString(R.string.LevelText)
                                + upgradelevel);
    
                    };
                }
    
                });
    
    
        }}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

人生戏 2025-02-11 01:05:02

我可以看到,您的点击正在更改(动态),而您的设定文本是静态的,这意味着它仅在开始时回复,并且从下一次进行时不会触发。解决此问题的一种方法是将setText值放在触发块(即OnClickListener)中,并使其按照触发的方式设置新的文本。

I can see that your clicks is changing(dynamic) while your set text is static that means it is only replying at the start and it is not triggered from the next time you do it. one way to tackle this is put the settext value in the trigger block(i.e onclicklistener) and make it set the fresh text as per triggered.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文