0

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

在此处输入图像描述

4

2 回答 2

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

    });     
于 2012-10-28T22:31:54.283 回答
1

在这两种情况下,t都被定义为监听器的成员变量,并且从不改变。而是将其移到onClick方法中,如下所示(在这两种情况下):

public void onClick(View v) {
    int t = Integer.parseInt(counterTxt.getText().toString());
    counterTxt.setText(String.valueOf(t-1));                
}
于 2012-10-28T22:31:39.293 回答