0

I'm pretty new to android, and I'm trying to implement SeekBar,

SeekBar batteryBar = (SeekBar) findViewById(R.id.battery_level);
batteryBar.setOnSeekBarChangeListener(new BatteryBar());

private class BatteryBar implements SeekBar.OnSeekBarChangeListener {
    public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {
        // TODO Auto-generated method stub
        // To be implemented....
    }

    public void onStartTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub
    }

    public void onStopTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub
    }

}

but I always get error

Syntax error on token "setOnSeekBarChangeListener", = expected after this token

according to Android SeekBar setOnSeekBarChangeListener or http://webtutsdepot.com/2011/12/03/android-sdk-tutorial-seekbar-example/ it should be correct way, how to do it.. Thanks for any help

Community
  • 1
  • 1
peterko
  • 1
  • 1
  • 2

2 Answers2

0

try to do it like this without creating new class

batteryBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {       

@Override       
public void onStopTrackingTouch(SeekBar seekBar) {      
    // TODO Auto-generated method stub      
}       

@Override       
public void onStartTrackingTouch(SeekBar seekBar) {     
    // TODO Auto-generated method stub      
}       

@Override       
public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {     
    // TODO Auto-generated method stub      
} 
}
Android
  • 427
  • 5
  • 14
  • It's same, moreover when using @override annotation, next error appeared: "The method onStopTrackingTouch(SeekBar) of type AddNewLevel must override or implement a supertype method", on each of three methods. AddNewLevel is class which extends Activity – peterko Jan 20 '14 at 22:37
  • OP, where is all your code being declared, it seems like you're making some fundamental mistake somewhere outside of this code you've listed – Nick Cardoso Jan 20 '14 at 23:41
0

One thing I noticed with the code you posted is that you're trying to implement your Seekbar listener as an inner class. If you want your Activity to implement the the OnSeekBarChangeListener it should look this :

import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class example extends Activity implements OnSeekBarChangeListener{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        SeekBar batteryBar = (SeekBar) findViewById(R.id.battery_level);
        batteryBar.setOnSeekBarChangeListener(this);
        //this references your class that is implementing OnSeekBarChangeListener
    }

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {

    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {

    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {

    }

}

If you don't have any specific reasoning for using an inner class then I would suggest using the code below. You will have access to the same methods. It also removes the need for an inner class. This also gives you the advantage of having mutliple OnSeekBarChangeListener() as different variables for different seekbars. If you implement OnSeekBarChangeListener() on a class then you have to go through handling different cases for different Seekbars.

SeekBar.OnSeekBarChangeListener  BatteryBar = new SeekBar.OnSeekBarChangeListener() {

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {
        // TODO Auto-generated method stub

    }
};

I hope this helps

UPDATE:

public class demo extends Activity  {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SeekBar batteryBar = (SeekBar) findViewById(R.id.battery_level);
    batteryBar.setOnSeekBarChangeListener(BatteryBar);
}

SeekBar.OnSeekBarChangeListener  BatteryBar = new SeekBar.OnSeekBarChangeListener() {

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress,
            boolean fromUser) {
        // TODO Auto-generated method stub

    }
};
}
VirtualProdigy
  • 1,637
  • 1
  • 20
  • 40
  • I don't want Activity to implementOnSeekBarChangeListener, so second option: after BatteryBar creation I should put `batteryBar.setOnSeekBarChangeListener(BatteryBar);` ? if so, new error here: `Syntax error on token "BatteryBar", VariableDeclaratorId expected after this token` – peterko Jan 20 '14 at 23:26
  • `SeekBar batteryBar = (SeekBar)findViewById(R.id.battery_level);` `batteryBar.setOnSeekBarChangeListener(BatteryBar);` Make sure those two lines in onCreate() or another method. Also the 'SeekBar.OnSeekBarChangeListener BatteryBar = new SeekBar.OnSeekBarChangeListener() {...' does not need to be in a method. – VirtualProdigy Jan 21 '14 at 15:11
  • @user3216930 Please see the update I added to the bottom of my original answer. I believe that will correct the last error you encountered. – VirtualProdigy Jan 21 '14 at 15:20