問題

カウンターが10を超えている場合、AlertDialogを表示しようとしています。

if文でTextView変数peopleCountを使用しようとしましたが、うまくいきません。 TextViewを使用しても機能しないことはわかっていますが、回避策があるかどうかを知る必要があります。

 private TextView peopleCount;
private ImageView plusOne;
private ImageView minusOne;
private ImageView reset;
private int counter;

private View.OnClickListener clickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        switch(v.getId()) {
            case R.id.ivPlusOne :
                plusCounter();
                break;
            case R.id.ivMinusOne :
                minusCounter();
                break;
            case R.id.ivReset :
                initCounter();
                break;

        }

    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_people);

    peopleCount = (TextView)findViewById(R.id.tvPeopleCount);

    plusOne = (ImageView)findViewById(R.id.ivPlusOne);
    plusOne.setOnClickListener(clickListener);

    minusOne = (ImageView)findViewById(R.id.ivMinusOne);
    minusOne.setOnClickListener(clickListener);

    reset = (ImageView)findViewById(R.id.ivReset);
    reset.setOnClickListener(clickListener);

    initCounter();

    if( counter > 10) {
        AlertDialog.Builder peopleAlert = new AlertDialog.Builder(PeopleActivity.this);

        peopleAlert.setCancelable(false);
        peopleAlert.setTitle("People Count High");
        peopleAlert.setMessage("Please check and replenish inventory");

        peopleAlert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogPeople, int which) {
                dialogPeople.cancel();


            }

        });
        peopleAlert.show();
    }

private void initCounter(){
    counter = 0;
    peopleCount.setText(counter + "");
}
private void plusCounter(){
    counter++;
    peopleCount.setText(counter + "");
}
private void minusCounter(){
    counter--;
    peopleCount.setText(counter + "");
}
 

カウンタが11に達したときにAlertDialogが表示されることを期待しましたが、何も起こりません。

  ベストアンサー

onCreateは一度だけ実行され、if文を関数に移動し、plusCounter()およびminusCounter()関数から呼び出す必要があります。

  同じタグがついた質問を見る

android