2012-04-06 10 views
0

Wenn ich den untenstehenden Code ausführen, geht alles gut, bis ich den Wert der Suchleiste ändere. Der onProgressChange ändert den Wert des Textes für myValue. Ich bekomme eine Kraft nah und es gibt mir die Log Cat Einträge unten.Android/Java-Variablen außerhalb des Geltungsbereichs möglicherweise

Während des Debuggens wurde die Ausnahme ausgelöst, die besagt, dass ID 2 nicht gefunden werden konnte, was zu erwarten ist, wie meinWert ist. Bitte sag mir was du denkst. Dank

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 (Haupt)

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){ 
} 


} 

Antwort

3

Sie den Text in einen int Einstellung, so Android denkt, dass Sie versuchen, eine Ressource, die von ID zu verweisen. Konvertieren progress in eine Zeichenfolge sollte Ihr Problem lösen. Z.B. Integer.toString(progress).

Verwandte Themen