我刚刚开始学习android而且我开始制作一个实验性应用程序。我的目标是当我按下按钮时,文本应该以这种方式改变:当它是" OFF" ,按下按钮应该使它" ON"与此相反。 这是我的代码:
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;
}
});
}
}
当我运行它并按下按钮时,应用程序显示" OFF"几分之一秒然后" ON"每次按下按钮都会发生这种情况。" ON"是默认值。我想知道我在这里缺少什么?
答案 0 :(得分: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);
}
});
答案 1 :(得分:1)
触摸时会生成大量MotionEvent
个。寻找Action
将您的代码放在event.getAction()==MotionEvent.ACTION_DOWN