Java 即使在Android上单击事件之后也显示以前的文本

Java 即使在Android上单击事件之后也显示以前的文本,java,android,Java,Android,下面是我的图片按钮点击操作 点击后会显示“1空”,按住按钮会显示rightAnswer。我想演示一下完成按住按钮后保存的questionLabel字符串 我想做的是在动作发生之前定义“sharedFact”,并保持用户按钮后显示的文本不变 “rightAnswer”只能在用户按住imageButton时显示 我尝试使用普通的字符串文本,比如“test”,它可以工作,但是字符串sharedFact=questionLabel.getText().toString() ↑ 没有像我想的那样工作,问题

下面是我的图片按钮点击操作

点击后会显示“1空”,按住按钮会显示rightAnswer。我想演示一下完成按住按钮后保存的questionLabel字符串

我想做的是在动作发生之前定义“sharedFact”,并保持用户按钮后显示的文本不变

“rightAnswer”只能在用户按住imageButton时显示

我尝试使用普通的字符串文本,比如“test”,它可以工作,但是字符串sharedFact=questionLabel.getText().toString()

↑ 没有像我想的那样工作,问题是什么,如何解决

findViewById(R.id.image_button_check).setOnTouchListener((v, event) -> {
        String sharedFact = null;
        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                sharedFact = questionLabel.getText().toString();
                questionLabel.setText(rightAnswer);
                break;

            case MotionEvent.ACTION_UP:
                //Here is only test "1" is for identify this code is working
                //How can I save questionLabel Text before action down but inside click action?
                questionLabel.setText(1 + sharedFact);
                break;
        }
        return false;
    });

将定义从函数内部移动到类数据成员

String sharedFact = null;
onCreate(){
// your code

findViewById(R.id.image_button_check).setOnTouchListener((v, event) -> {
        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                sharedFact = questionLabel.getText().toString();
                questionLabel.setText(rightAnswer);
                break;

            case MotionEvent.ACTION_UP:
                //Here is only test "1" is for identify this code is working
                //How can I save questionLabel Text before action down but inside click action?
                questionLabel.setText(1 + sharedFact);
                sharedFact = null
                break;
        }
        return false;
    });
}

与此同时,我意识到我犯了一个愚蠢的错误。同样的方法也有效,谢谢