मैंने अभी अपने एक ऐप को नए v22.1.1 सपोर्ट एंड ऐप्पोमैट लाइब्रेरी में एडजस्ट करने का काम पूरा किया है, अधिक जानकारी के लिए यहां और यहां देखें। जब मैंने कुछ परीक्षण किया, तो एक्शनमॉड्स के साथ कुछ बंद था जिसका मैं उपयोग कर रहा हूं।
जब आप एक कॉल का उपयोग करके एक्शनमोड शुरू करते startSupportActionMode()
हैं - इससे कोई फर्क नहीं पड़ता कि आप अब अपग्रेड किए गए एक्शनबेरक्टिविटी बेस क्लास या नए AppCompatActivity बेस क्लास का उपयोग करते हैं - onPrepareActionMode()
तो नहीं कहा जा रहा है।
पिछले संस्करणों में, v21.0.3 और v22.0.0 सहित, onPrepareActionMode()
स्वचालित रूप से कॉल किया गया था, जब ActionMode का उपयोग शुरू में किया गया था startSupportActionMode()
।
मैंने इसे 2.2, 4.4.2 और 5.0 डिवाइस पर परीक्षण किया, इसलिए ऐसा लगता है कि यह संस्करण पर निर्भर नहीं है।
क्या किसी को पता है, अगर यह अभिप्रेत व्यवहार है, जिसे v22.1.1, या बग में पेश किया गया है?
मुझे यह मुद्दा मिला , लेकिन यहाँ बहुत प्रतिक्रिया नहीं है ...
11 मई 2015 को संपादित करें:
जैसा कि एंड्रॉइड इश्यू ट्रैकर 159527 में उल्लेख किया गया है , यह समस्या न केवल ऐप्पोमैट के v22.1.x और समर्थन पुस्तकालय को प्रभावित करती है, बल्कि 5.1 एंड्रॉइड कार्यान्वयन को भी प्रभावित करती है।
फिलहाल दो संभव अस्थायी समाधान, एक सामान्य:
@Override
public ActionMode startSupportActionMode(final ActionMode.Callback callback) {
// Fix for bug https://code.google.com/p/android/issues/detail?id=159527
final ActionMode mode = super.startSupportActionMode(callback);
if (mode != null) {
mode.invalidate();
}
return mode;
}
और एक 'त्वरित और गंदा' एक (जब आप अपने ActionMode झटपट)
final ActionMode actionMode = startSupportActionMode(new MyActionMode());
if(actionMode != null) {
actionMode.invalidate();
}
आप appcompat उपयोग नहीं करते हैं ( ActionBarActivity
/ AppCompatActivity
) आप प्रतिस्थापित करने की आवश्यकता startSupportActionMode()
के साथ startActionMode()
।
दुर्भाग्य से यह अभी भी स्पष्ट नहीं है अगर यह नया व्यवहार या बग है। एपीआई डॉक्टर के अनुसार यह एक बग / प्रतिगमन है, लेकिन कौन जानता है ...