android - How to show Badge in TabHost -
यह मेरा मुख्य गतिविधि है। जावा:
सार्वजनिक शून्य ऑन क्रेट (बंडल सहेजे गए इन्स्टैंसस्टेट) {सुपर। कॉन्टेट (सहेजे गए इन्स्टेंसस्टेट); setContentView (R.layout.main_activity); संसाधन ressources = getResources (); TabHost tabHost = getTabHost (); रजिस्टर रिसीवर (myBroadcastReceiver1, नया इंटेन्टफ़िल्टर (MYBROADCAST_INTENTFILTER)); आशय intentFriends = नए आशय ()। SetClass (यह, TabFriendsActivity.class) .addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); टैबसीपीईसी टैबफ्रीएक्स = टैबहोस्ट .नईटीटीपीएसपीईसी ("मित्र") .सेटइंडिकेटर ("", रिज़ोसिएशन.गेटड्रॉउबल (आरड्रॉवेबल.बीटीएन_टैब_फ्रेंड)) .सेट कंटेंट (इन्टेंटफ्रीएंड्स); // वार्ता टैब आशय intentTalks = नया आशय () .setClass (यह, TabTalksactivity.class) .addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); TabSpec tabTalks = tabHost .newTabSpec ("वार्ता") .setIndicator ("", ressources.getDrawable (R.drawable.btn_tab_talk)) .setContent (intentTalks); // मित्र जोड़ें टैब इन्टेंट इन्टेंट एडफ्रीएड्स = नविन इंटेंट ()। सेट क्लास (यह, टैबएडफ्रीएक्सविटिटी.क्लैस) .एडफ़्लैग (इन्टेंट.फ्लैग_एक्टिविटी_CLEAR_TOP); टैबसीपीईसी टैबऐडफ्रीएक्स = टैब्स। होस्ट। एनईईटीबीएसपीईसी ("मित्रों को जोड़ें") .सेटइंडिकेटर ("", रिज़ोसिएशन.गेटड्रॉउबल (आरड्रॉवेबल.बीटीएन_टैब_डेंडर)) .सेट कॉन्टैन्ट (इन्टैंटएडफ्रीएंडस); // अन्य टैब इंटेंट इंटेंट अन्य = नया इंटेंट () .setClass (यह, TabOtherActivity.class) .addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); TabSpec tabSpecOther = tabHost .newTabSpec ("अन्य") .setIndicator ("", ressources.getDrawable (R.drawable.btn_tab_other)) .setContent (intentOther); // सभी टैब टैब जोड़ें host.addTab (tabFriends); tabHost.addTab (tabTalks); tabHost.addTab (tabAddFriends); tabHost.addTab (tabSpecOther); // सेट विंडोज टैब डिफ़ॉल्ट के रूप में (शून्य आधारित) tabHost.setCurrentTab (0); TabWidget टैब = (TabWidget) findViewById (android.R.id.tabs); बैज = नया बैज दृश्य (यह, टैब, 1); badge.setText ( "नया"); }
जब मैं जीसीएम
से ब्रॉडकास्ट रिसीवर
से संदेश प्राप्त हुआ तब मैं टैब्लेट में पाठ "नया" दिखाना चाहता हूं। मैं डिबग करने की कोशिश करता हूं और "इंटेंट सीटींग" की जानकारी मिलती है जिसका अर्थ है ब्रॉडकास्ट रिसीवर
काम कर रहा है, लेकिन टैबटॉक आइकन में "नया" नहीं दिखाया गया है।
निजी ब्रॉडकास्ट रीसिसर myBroadcastReceiver1 = नया ब्रॉडकास्ट रिसीवर () {@ ओवरराइड पब्लिक रिकॉइड ऑन रीसेव (संदर्भ संदर्भ, आशय का इरादा) {स्ट्रिंग इन्टेंट सीटिंग = इन्टेंट.गेट एक्टास्ट्रॉस ()। ("इन्टेंट") प्राप्त करें। ToString (); अगर (आशयकैटिंग! = नल) {पुशबैज (इन्टेंट सीटिंग); }}}; निजी शून्य धक्का बग (स्ट्रिंग इन्टेंटटेटिंग) {badge.show (); }
और यह मेरा मुख्य_एक्टिविटी.एक्सएमएल:
& lt;? Xml संस्करण = "1.0" एन्कोडिंग = "यूटीएफ -8 "& gt; & Lt; TabHost xmlns: एंड्रॉइड = "http://schemas.android.com/apk/res/android" एंड्रॉइड: आईडी = "@ एंड्रॉइड: आईडी / टैबहोस्ट" एंड्रॉइड: layout_width = "fill_parent" एंड्रॉइड: layout_height = "fill_parent" एंड्रॉयड: पृष्ठभूमि = "# f2f2f2" & gt; & Lt; LinearLayout एंड्रॉइड: layout_width = "fill_parent" एंड्रॉइड: layout_height = "fill_parent" android: orientation = "ऊर्ध्वाधर" & gt; & Lt; FrameLayout एंड्रॉइड: id = "@ android: id / tabcontent" एंड्रॉइड: layout_width = "fill_parent" एंड्रॉइड: layout_height = "462dp" एंड्रॉइड: layout_weight = "0.07" & gt; & Lt; / FrameLayout & gt; & Lt; TabWidget एंड्रॉइड: id = "@ एंड्रॉइड: आईडी / टैब्स" एंड्रॉइड: layout_width = "fill_parent" एंड्रॉइड: layout_height = "wrap_content" एंड्रॉइड: पृष्ठभूमि = "# 000" / & gt; & Lt; / LinearLayout & gt; & Lt; / TabHost & gt;
तो, मेरे कोड में क्या गलत है मैं जीसीएम
द्वारा प्रसारण रिसेवर
से रिसीवर संदेश जब टैबहोस्ट में बैज दिखाना चाहता हूँ। लेकिन यह काम नहीं है!
कोई भी मदद बहुत सराहना की! धन्यवाद।
Comments
Post a Comment