android studio中从布局文件到MainActivity.java的控制流

android studio中从布局文件到MainActivity.java的控制流,java,android,android-studio,buttonclick,Java,Android,Android Studio,Buttonclick,下面是一个android应用程序的代码片段,该应用程序生成一个1-20形式的随机数,用户猜测该数字,当在猜测该数字后按下按钮时,将比较用户编写的数字(val)和应用程序生成的数字(rand_no) 在比较之后,我希望显示的文本消失,以便在每次猜测和按下按钮时生成新的输出 每次调用函数时(按下按钮时),我都将可见性设置为不可见,然后在进行比较并显示输出后再次将可见性设置为可见。 但令我惊讶的是,该操作只发生一次,在第一次函数调用后,文本不再可见 public class MainActivity

下面是一个android应用程序的代码片段,该应用程序生成一个1-20形式的随机数,用户猜测该数字,当在猜测该数字后按下按钮时,将比较用户编写的数字(val)和应用程序生成的数字(rand_no)

在比较之后,我希望显示的文本消失,以便在每次猜测和按下按钮时生成新的输出

每次调用函数时(按下按钮时),我都将可见性设置为不可见,然后在进行比较并显示输出后再次将可见性设置为可见。 但令我惊讶的是,该操作只发生一次,在第一次函数调用后,文本不再可见

public class MainActivity extends AppCompatActivity {
Random random=new Random();
int rand_no=random.nextInt(20)+1;
public void function(View v)
{
    EditText e1=(EditText)findViewById(R.id.editText); //for text input by 
                                                       //the user

    TextView e2=(TextView) findViewById(R.id.textOutput); //for output text

    int val=Integer.parseInt(e1.getText().toString());

    e2.setVisibility(View.INVISIBLE);  //setting output to INVISIBLE
    if(rand_no<val)
    {
        e2.setText("Go Lower!");
    }

    if(rand_no>val)
    {
        e2.setText("Go Higher!");
    }

    if(rand_no==val)
    {
        e2.setText("You guessed right!");
    }
    e2.setVisibility(View.VISIBLE); //setting output to VISIBLE

      /* Fading away the output*/
    e2.animate().setStartDelay(2000);
    e2.animate().alpha(0).setDuration(1000);
}
public类MainActivity扩展了AppCompatActivity{
随机=新随机();
int rand_no=random.nextInt(20)+1;
公共职能(视图五)
{
EditText e1=(EditText)findViewById(R.id.EditText);//用于输入的文本
//用户
TextView e2=(TextView)findViewById(R.id.textOutput);//用于输出文本
int val=Integer.parseInt(e1.getText().toString());
e2.setVisibility(View.INVISIBLE);//将输出设置为不可见
如果(新兰德)
{
e2.setText(“再高一点!”);
}
if(rand_no==val)
{
e2.setText(“你猜对了!”);
}
e2.setVisibility(View.VISIBLE);//将输出设置为可见
/*减弱输出*/
e2.animate().setStartDelay(2000);
e2.animate().alpha(0).setDuration(1000);
}
因此我想知道,在函数结束后,控件将再次传递给 布局文件?或者它保留在MainActivity.java中,因为看起来可见性只分配了一次,即使我们多次按下按钮,该函数也会再次执行

e2.animate().alpha(0).setDuration(1000)

您正在使其褪色,因此需要使其再次可见

将引用行替换为以下代码

    e2.animate().alpha(0).setDuration(1000)
    .setListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationStart(Animator animation) {

        }

        @Override
        public void onAnimationEnd(Animator animation) {
            e2.animate().alpha(1).setDuration(500);
        }

        @Override
        public void onAnimationCancel(Animator animation) {

        }

        @Override
        public void onAnimationRepeat(Animator animation) {

        }
    });

问题在于这行代码
e2.animate().alpha(0).setDuration(1000);
现在只需注释并验证。将alpha设置为0似乎是个问题。