如何更改方法内的变量

问题描述 投票:0回答:1

我是 Android 应用程序编程新手。 如何更改按钮方法(或任何方法)内的变量(布尔)

这只是一个例子:

package com.example.test1;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.renderscript.Sampler;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    Button btn1,btn2;
    Boolean player1is = true;
    TextView controllview;
    TextView controllview2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn1= findViewById(R.id.button1);
        btn2 = findViewById(R.id.button2);
        controllview=findViewById(R.id.controll1);
        controllview2=findViewById(R.id.controll2);

        if(player1is){
            btn1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    player1is = false;
                    controllview.setText(String.valueOf(player1is));
                    Toast.makeText(MainActivity.this, "left", Toast.LENGTH_SHORT).show();
                }
            });
        }else {
            btn2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    player1is = true;
                    controllview.setText(String.valueOf(player1is));
                    Toast.makeText(MainActivity.this, "right", Toast.LENGTH_SHORT).show();
                }
            });

        }
        controllview2.setText(String.valueOf(player1is));
    }
}

如果我运行此代码,

controllview
会发生变化,但显示
controllview2
全局值的
player1is
不会改变。 我还尝试用单独的方法更改值,例如:

public void changebool(Boolean c) {
    player1is= c;
}

然后从 onclick-method 中使用所需的值调用它,但它具有相同的效果。

我知道,我在这里遗漏了一个非常基本的点,但我找到的例子并不令人满意(或者我搜索的方式错误)。

我计划做的是,每个“玩家”(在一个已经运行的、更复杂的应用程序中 - 除了这个小问题)都可以交替按下按钮。

还尝试使用开关或向相应 XML 中的文本视图写入和读取值。

我希望这两个按钮能够交替工作。

java android boolean
1个回答
0
投票

使用

java.util.concurrent.atomic.AtomicBoolean
可以解决这个问题

© www.soinside.com 2019 - 2024. All rights reserved.