0

私はアンドロイド開発が初めてです..メインクラスにこのコードがあります:

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 になります。

しかし、もう一度クリックしても、これら2つの値のみが表示されます。適切なボタンをクリックするたびに 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 に答える