1

クラスに InvokeService() という名前のメソッドがあり、その中にリモートサービスからの Int 値を格納しています。

このような

int hvactemp=remoteService.getHvacTemp();

この値をテキストビューに保存しています。

drivertmpcount.setText(Integer.toString(hvactemp));

ここで、ボタンのクリック時にこの値を増減させたいと思います。

コードで宣言された2つのボタンがあり、問題は

右ボタンをクリックすると、値が増加します

値が 30 で、30、31、32、33、34、35 などのように増加するとします。

しかし、問題は、左ボタンをクリックしたときに、現在の値から減少しないことです。値を増やした後に言ったように、値は35なので、左ボタンを押すと、次のようになります34,32,31,32

ただし、35,34,32,31 ではなく 30,29,28,27 から減少しています

これを解決するには?

これが私のコードです。

 private void invokeService() {

    if (conn == null) {
        // Toast.makeText(CarHome.this, "Cannot invoke - service not bound",
        // Toast.LENGTH_SHORT).show();
    } else {
        try {
            System.out.println(remoteService);

            int rpm = remoteService.getEnginRPM();
            int temp = remoteService.getTemperature();
            // int battery = remoteService.getBatteryLevel();
            int speed = remoteService.getSpeed();
            final int hvactemp = remoteService.getHvacTemp();
            System.out.println("Raghav hvac" + hvactemp);

            System.out.println("jaydeep speed" + speed);
            // rpm_text.setText(rpm);


        drivertmpcount.setText(Integer.toString(hvactemp));


            driverbtnright.setOnClickListener(new View.OnClickListener() {

                int hvactemp=remoteService.getHvacTemp();



                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    hvactemp++;
                    drivertmpcount.setText(Integer.toString(hvactemp));
                     System.out.println("Raghav hvac" + hvactemp);


                }
            });

            driverbtnleft.setOnClickListener(new View.OnClickListener() {
                int hvactemp=remoteService.getHvacTemp();
                public void onClick(View v) {
                    // TODO Auto-generated method stub


                    //  drivertmpcount.setText(Integer.toString(hvactemp));
                    hvactemp --;
                    drivertmpcount.setText(Integer.toString(hvactemp));
                     System.out.println("Raghav decrement hvac" + hvactemp);

                }
            });  
4

5 に答える 5

4

コードフローが間違っています。

int hvactemp=remoteService.getHvacTemp();これを 2 クリック リスナーから削除hvactempし、クラス変数として宣言します。

于 2012-11-12T11:19:26.883 に答える
2

これを試して :

        driverbtnright.setOnClickListener(new View.OnClickListener() {


            public void onClick(View v) {
                // TODO Auto-generated method stub

               int increase = Integer.parseInt((String)driverbtnright.getText())+1;

               driverbtnright.setText(increase);


            }
        });

        driverbtnleft.setOnClickListener(new View.OnClickListener() {
            int hvactemp=remoteService.getHvacTemp();
            public void onClick(View v) {

            int decrease= Integer.parseInt((String)driverbtnright.getText())-1;

               driverbtnright.setText(decrease);
            }
        });  
于 2012-11-12T11:24:50.340 に答える
1

hvactemp をグローバル整数として宣言し、デフォルトの oncreate メソッドとボタンのクリック (インクリメントとデクリメント) で設定されます。これは、後でテキストビューにテキストを設定するために使用されます。

       private int hvactemp; //declare it globally
       hvactemp = remoteService.getHvacTemp(); 

    drivertmpcount.setText(Integer.toString(hvactemp));


        driverbtnright.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub

                hvactemp++;
                drivertmpcount.setText(Integer.toString(hvactemp));
                 System.out.println("Raghav hvac" + hvactemp);


            }
        });

        driverbtnleft.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub



                hvactemp --;
                drivertmpcount.setText(Integer.toString(hvactemp));
                 System.out.println("Raghav decrement hvac" + hvactemp);

            }
        });  
于 2012-11-12T11:34:31.533 に答える
1

これを試して。

String t = drivertmpcount.getText().toString();

    int a = Integer.parseInt(t);
    a--;

    drivertmpcount.setText(Integer.toString(a));
                         System.out.println("Raghav decrement hvac" + a);

edittext の現在のテキストではなく hvactemp を参照しているために発生しています。それが役に立てば幸い。

于 2012-11-12T11:17:47.903 に答える
0

私はこれを試します...私のコードを見てください..

plus = (Button) findViewById(R.id.btn_plus);
    minus = (Button) findViewById(R.id.btn_minus);

    plus.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) 
        {
            // TODO Auto-generated method stub
            txt_number.setText(Integer.toString(textvalue));
            textvalue++;
        }
    });

    minus.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            textvalue--;
            txt_number.setText(Integer.toString(textvalue));
        }
    });
于 2013-05-27T13:19:54.963 に答える