我是Android开发的新手.. 我的主要课程中有这段代码:
Button prevBtn, pauseBtn, nextBtn;
EditText counterTxt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_affirmations);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prevBtn = (Button)findViewById(R.id.prevBtn);
pauseBtn = (Button)findViewById(R.id.pauseBtn);
nextBtn = (Button)findViewById(R.id.nextBtn);
counterTxt = (EditText)findViewById(R.id.counterTxt);
prevBtn.setOnClickListener(new View.OnClickListener() {
int t = Integer.parseInt(counterTxt.getText().toString());
public void onClick(View v) {
counterTxt.setText(String.valueOf(t-1));
}
});
nextBtn.setOnClickListener(new View.OnClickListener() {
int t = Integer.parseInt(counterTxt.getText().toString());
public void onClick(View v) {
counterTxt.setText(String.valueOf(t+1));
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_affirmations, menu);
return true;
}
单击“上一步”时,文本字段值变为19。
单击“下一步”时,文本字段值变为21。
但它只显示这两个值,无论是否再次点击都没有。每当我点击相应的按钮时,我想减去或加1。
我认为这是因为事件监听器在onCreate()方法中?有关如何在每次点击时更新它的想法吗?
答案 0 :(得分:6)
您需要将parseInt
移到onClick
:
nextBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
int t = Integer.parseInt(counterTxt.getText().toString());
counterTxt.setText(String.valueOf(t+1));
}
});
答案 1 :(得分:1)
在这两种情况下,t
都被定义为侦听器的成员变量,并且从未更改过。将它移到onClick
方法中,就像这样(在两种情况下):
public void onClick(View v) {
int t = Integer.parseInt(counterTxt.getText().toString());
counterTxt.setText(String.valueOf(t-1));
}