में मेनू आइटम पर दृश्य बदलना मैं अपने ऐप में रीफ्रेश बटन को लागू करने का प्रयास कर रहा हूं ताकि उपयोगकर्ता को वेब सर्वर पर मैन्युअल रूप से फिर से सिंक हो सके। कोड काम करता है, लेकिन मुझे एक्शन व्यू को समझने में परेशानी हो रही है (कम से कम, मुझे लगता है कि मैं यही उपयोग कर रहा हूं)।एक्शन बार
मेरे मेनू आइटम यहाँ है:
<item
android:id="@+id/main_menu_refresh"
android:enabled="true"
android:icon="@drawable/refresh"
android:orderInCategory="1"
android:showAsAction="ifRoom"
android:title="@string/refresh"
android:actionViewClass="android.widget.ProgressBar">
</item>
समस्या है, यह हमेशा ProgressBar को दर्शाता है। मुझे आश्चर्य हुआ कि क्या यह खोज विजेट (एकमात्र उदाहरण है जिसे मैं वास्तव में ऑनलाइन देखता हूं) की तरह काम करता हूं और collapseActionView
टैग को showAsAction
पर जोड़ा और इसे तुरंत दिखाए जाने से रोका। हालांकि, जब मैं रीफ्रेश बटन पर क्लिक करता हूं, तो आइकन गायब हो जाता है (अच्छा), लेकिन एक्शन बार में शीर्षक भी होता है, और प्रोग्रेसबार विंडो के बाईं ओर दिखाई देता है जहां शीर्षक होता था। मैं जो भी चाहता था वह भी नहीं।
MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh);
Log.w("MyApp", "Have Menu");
ProgressBar pb = new ProgressBar(ReadingList.this);
refresh.setActionView(pb);
कि या तो काम नहीं किया, मुझ पर एक अशक्त सूचक त्रुटि है:
एक अंतिम खाई प्रयास के बारे में कुछ के रूप में, मैं अपने कोड में जोड़ने के लिए, और XML से actionViewClass
को दूर करने का प्रयास किया setActionView
।
मैं एक समाधान है कि मैं किसी भी समारोह से कॉल कर सकते हैं की जरूरत है, और यह करने के लिए वापस करने में सक्षम हो के बाद स्थिर आइकन है (वहाँ शुरुआत में एक स्वत: समन्वयन अवधि मैं ProgressBar रूप में अच्छी तरह के दौरान प्रदर्शित करना चाहते हैं) है।
मैंने this question के माध्यम से पढ़ने की कोशिश की, लेकिन मुझे जवाब देने में समस्या आ रही है। मुझे लगता है कि मैं जो कुछ कहता हूं वह करने की कोशिश कर रहा था, लेकिन मुझे नहीं लगता। किसी भी सहायता की बहुत सराहना की है।
संपादित करें: Sastraxi के सुझाव के लिए।
public class IconSwitcher extends LinearLayout{
public IconSwitcher(Context context) {
super(context);
ProgressBar pb = new ProgressBar(context);
ImageView iv = new ImageView(context);
addView(iv);
addView(pb);
}
}
यह मेरी कक्षा अब तक है। हालांकि, मैं जब कोशिश करते हैं और साथ इसे संदर्भ:
MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh);
IconSwitcher ic = (IconSwitcher) refresh.getActionView();
मैं एक अशक्त सूचक त्रुटि मिलती है। IconSwitcher बनाने पर।
<item
android:id="@+id/main_menu_refresh"
android:enabled="true"
android:icon="@drawable/refresh"
android:orderInCategory="1"
android:showAsAction="ifRoom"
android:title="@string/refresh"
android:actionViewClass="IconSwitcher">
</item>
मैं सिर्फ संदर्भित IconSwitcher देखें कि पर एक कठिन समय हो रही है: बटन XML इस प्रकार है।
संपादित करें 2: मुझे मेनू आइटम को संदर्भित करने में परेशानी हो रही है।
MenuItem refresh = (MenuItem)findViewById(R.id.main_menu_refresh);
refresh.setVisible(false);
इसके अलावा मुझे एक नल पॉइंटर देता है जब मैं कोशिश करते हैं और दृश्यता की स्थापना की। मेरे संदर्भों में क्या गलत है?
यह सेटएक्शन व्यू में विफल नहीं है, लेकिन उस बिंदु पर जहां आप कर रहे हैं (MenuItem) findViewById (R.id.main_menu_refresh)। जाहिर है यह एक्शनआईटिव्यू को मेनूइटम पर डालने के लिए क्लासकास्ट अपवाद है। – Namratha
मैंने इसे समझ लिया। मुझे यह पिछला [SO] मिला है (http://stackoverflow.com/questions/7142722/replacing-an-actionbar-menu-item-icon-with-an-indeterminate-progressbar) प्रश्न। वहां से, मुझे यह कोड मिला [Google] [http://developer.android.com/resources/samples/ActionBarCompat/src/com/example/android/actionbarcompat/ActionBarHelperHoneycomb.html) पर Google ने लिखा था। यह मूल रूप से उस बिंदु पर कॉपी और पेस्ट था, और पूरी तरह से काम करता है। –