एक बटन एक ऐसी क्रिया को ट्रिगर करता है जिसे केवल एक बार बुलाया जाना चाहिए। पहले कार्रवाई किया जाता है बटन अक्षम और onClick हैंडलर में छिपा हुआ है:एंड्रॉइड: एक बटन पर एकाधिक ऑनक्लिक घटनाओं को रोकें (जिसे अक्षम कर दिया गया है)
someButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
someButton.setEnabled(false);
someButton.setClickable(false);
someButton.setVisibility(View.GONE);
performTaskOnce();
}
});
private void performTaskOnce() {
Log.i("myapp", "Performing task");
//Do something nontrivial that takes a few ms (like changing the view hierarchy)
}
हालांकि बटन तुरंत अक्षम किया गया है, यह बहुत जल्दी कई बार दोहन से कई "onClick" घटनाओं को गति प्रदान करने फिर भी संभव है। (यानी performTaskOnce
को कई बार कहा जाता है)। ऐसा लगता है कि बटन वास्तव में अक्षम होने से पहले ऑनक्लिक ईवेंट कतारबद्ध हैं।
मैं प्रत्येक एकल ऑनक्लिक हैंडल में जांच करके समस्या को ठीक कर सकता हूं कि संबंधित बटन पहले ही अक्षम है या नहीं, लेकिन यह हैक जैसा लगता है। क्या इस मुद्दे से बचने का कोई बेहतर तरीका है?
समस्या 2.3 2.3 पर समस्या होती है, मैं इसे एंड्रॉइड 4.0.3 पर पुन: पेश नहीं कर सकता। लेकिन 4.x उपकरणों की दुर्लभता को देखते हुए यह पुराने उपकरणों को बाहर करने का विकल्प नहीं है।
समस्या मुझे दिनों के लिए परेशान कर रही थी .. – mohnage7