2012-03-20 11 views
12

मैं चाहता हूं कि जब भी मैं बटन पर क्लिक करता हूं तो खोजबार प्रगति को बदलना चाहती है। सेट प्रोग्रेस() केवल प्रारंभिक मान के लिए काम करता है, अगर मैं कुछ बदलावों के बाद उपयोग करता हूं तो यह त्रुटि फेंकता है।एंड्रॉइड सीकबार सेट प्रगति मूल्य

उत्तर

1

आपको अपनी तलाश बॉक्स पर setOnSeekbarChangeListener() पर कॉल करने की आवश्यकता है और उदाहरण के लिए आपकी गतिविधि OnSeekbarChangeListener() लागू करें और उस फ़ंक्शन में आप जो भी चाहें कर सकते हैं।

22

शायद आपको हैंडलर का उपयोग करने की कोशिश करनी चाहिए? मैं इसे अपने ऐप में इस्तेमाल करता हूं और ठीक काम करता हूं।

1) जब अपने seekbar बनाने:

// ... 
seekBarHandler = new Handler(); // must be created in the same thread that created the SeekBar 
seekBar = (SeekBar) findViewById(R.id.my_seekbar); 
// you should define max in xml, but if you need to do this by code, you must set max as 0 and then your desired value. this is because a bug in SeekBar (issue 12945) (don't really checked if it was corrected) 
seekBar.setMax(0); 
seekBar.setMax(max); 
seekBar.setProgress(progress); 
// ... 

2) अपने बटन क्लिक किया जाता है तो

// ... 
seekBarHandler.post(new Runnable() { 
    @Override 
    public void run() { 
     if (seekBar != null) { 
      seekBar.setMax(0); 
      seekBar.setMax(max); 
      seekBar.setProgress(newProgress); 
     } 
    } 
}); 
// ... 
+0

तुम क्यों बुला रहे हैं setMax (int) दो बार के निमिष? लगता है कि दूसरा एक सिर्फ पहले को खत्म कर देता है। – Alyoshak

+0

"ऐसा इसलिए है क्योंकि सेकरबार में एक बग (अंक 12 9 45) (वास्तव में चेक किया गया है अगर इसे सही किया गया हो)" – PFROLIM

2

तुम भी उपयोग कर सकते हैं: आप प्रगति सेट

mSeekBar.refreshDrawableState(); 

के बाद।

1

समाधान है कि मेरे लिए काम करता है:

mSeekbaBar.setProgress(progress); 
mSeekbaBar.post(new Runnable() { 
      @Override 
      public void run() { 
       mSeekbaBar.setProgress(progress); 
      } 
     }); 

यह निकालता है अंगूठे

संबंधित मुद्दे