Android - 如何增加EditText值?

时间:2012-10-28 22:26:33

标签: android android-activity

我是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()方法中?有关如何在每次点击时更新它的想法吗?

enter image description here

2 个答案:

答案 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));                
}