2017-06-06 138 views
-1

我刚刚开始学习android,并开始制作一个实验性应用程序。我的目标是当我按下按钮时,文本应该以这种方式更改:当它处于“OFF”状态时,按下按钮应使其成为“ON”并且相反。 这里是我的代码:我每次按下按钮时如何更改textView的文本?

public class MainActivity extends AppCompatActivity { 

    private TextView textView; 

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

     textView = (TextView) findViewById(R.id.TextView); 
     Button button = (Button) findViewById(R.id.button); 

     button.setOnTouchListener(new View.OnTouchListener(){ 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 
       String text=""; 
        if (textView.getText().equals("ON")) { 
         text="OFF"; 
        } else if (textView.getText().equals("OFF")) { 
         text="ON"; 
        } 
       textView.setText(text); 
       return false; 
      } 

     }); 
    } 
} 

当我运行它,然后按下按钮,该应用程序显示了一秒钟,然后“ON”的一小部分“OFF”再试一次发生每次我按下按钮时, “ON”是默认值。我只想知道我在这里错过了什么?

回答

3

您必须使用setOnClickListener而不是setOnTouchListener,因为触摸比点击更明智。撰写该代码:

button.setOnClickListener(new View.OnClickListener(){ 

    @Override 
    public void onClick(View v) { 
     String text=""; 
      if (textView.getText().equals("ON")) { 
       text="OFF"; 

      } 
      else if (textView.getText().equals("OFF")) { 
       text="ON"; 

      } 
     textView.setText(text); 
    } 

}); 
+0

非常感谢你的工作!我想我必须检查onclick和ontouch之间的区别。 –

1

有大量的MotionEvent s产生了触摸。寻找Action 把你的代码放在里面event.getAction()==MotionEvent.ACTION_DOWN

相关问题