0

When I run the below code, everything goes great until I change the value of the seekBar. The onProgressChange changes the value of the text for myValue. I get a force close and it gives me the log cat entries below.

While going through debug, the exception thrown said it could not find ID 2, which you can tell is myValue, to be expected. Please let me know what you think. Thanks

04-06 18:15:38.576: E/AndroidRuntime(25164):android.content.res.Resources$NotFoundException: String resource ID #0x2f
04-06 18:15:38.576: E/AndroidRuntime(25164):    at android.content.res.Resources.getText(Resources.java:201)
04-06 18:15:38.576: E/AndroidRuntime(25164):    at android.widget.TextView.setText(TextView.java:2877)
04-06 18:15:38.576: E/AndroidRuntime(25164):    at thisPackage.Tabs.CustomSeekBar.onProgressChanged(CustomSeekBar.java:74)

ColorsActivity (main)

public class ColorsActivity extends Activity
{
CustomSeekBar red = new CustomSeekBar();
RelativeLayout theItem;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.seekbarlist);     
    RelativeLayout thisOne = (RelativeLayout)findViewById(R.id.mainLayout);



    attachLayout(thisOne, red, "red", 1);
    //attachLayout(thisOne, "blue", 2);
    //attachLayout(thisOne, "green", 3);

   // Amarino.connect(this, "00:11:11:21:05:53");
}
public void attachLayout(RelativeLayout layout, CustomSeekBar object, String label, int id)
{

    theItem = object.createCustomSeekBar(this, label);
    theItem.setId(id);
    RelativeLayout.LayoutParams myLayoutParams  =  new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    myLayoutParams.addRule(RelativeLayout.BELOW,id-1);
    theItem.setLayoutParams(myLayoutParams);
    layout.addView(theItem, id);
}


}

CustomSeekBar

public class CustomSeekBar implements SeekBar.OnSeekBarChangeListener {

  Context myContext;
 RelativeLayout myLayout;
  TextView myValue;
  TextView myLabel;
  SeekBar mySeekBar;

  public void CustomSeekBar(){

  }


public RelativeLayout createCustomSeekBar(Context context, String label){


    myContext = context;                
    myLayout = new RelativeLayout(myContext); 


    mySeekBar = new SeekBar(myContext);
    myLabel = new TextView(myContext);
    myValue = new TextView(myContext);  

    mySeekBar.setId(1);
    myLabel.setId(2);
    myValue.setId(3);

    RelativeLayout.LayoutParams mySeekBarParams =  new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    RelativeLayout.LayoutParams myLabelParams   =  new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    RelativeLayout.LayoutParams myValueParams   =  new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);

    int seekBarId =  mySeekBar.getId();
    int labelId =  myLabel.getId();

    myLabelParams.addRule(RelativeLayout.BELOW,seekBarId);
    myValueParams.addRule(RelativeLayout.BELOW,seekBarId);
    myValueParams.addRule(RelativeLayout.RIGHT_OF,labelId);

    mySeekBar.setLayoutParams(mySeekBarParams);
    myLabel.setLayoutParams(myLabelParams);
    myValue.setLayoutParams(myValueParams);

    myLabel.setText(label);
    myValue.setText("hello");       
    mySeekBar.setOnSeekBarChangeListener(this);

    myLayout.addView(myLabel);
    myLayout.addView(myValue);
    myLayout.addView(mySeekBar);


    return myLayout;

}

 public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
    myValue.setText(progress);      
    //Amarino.sendDataToArduino(myContext, "00:11:11:21:05:53", 'A', progress);
 }
 public void onStopTrackingTouch(SeekBar seekBar){

 }
 public void onStartTrackingTouch (SeekBar seekBar){
 }


}

1 Answer 1

3

You are setting the text to an int, so Android thinks you are trying to reference a resource by id. Converting progress to a string should solve your problem. E.g. Integer.toString(progress).

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.