java - Infinite loop when running an activity -


मेरे पास यह क्लास है:

  सार्वजनिक वर्ग मानचित्र में ActionBarActivity लागू करता है TabListener {@Override protected शून्य पर क्रेट (बंडल सहेजे गए इन्स्टैंसस्टेट) {सुपर.नक्रेट (सहेजे गए इन्स्टेंसस्टेट); setContentView (R.layout.activity_the_map); // क्रिया बार सेट करें अंतिम एक्शनबियर एक्शनबार = मिलनएक्शनबार (); actionBar.setNavigationMode (ActionBar.NAVIGATION_MODE_TABS); ActionBar.Tab ttestTab = actionBar.newTab ()। SetText ("परीक्षण"); एक्शनबार.Tab chatTab = actionBar.newTab ()। SetText ("चैट"); testTab.setTabListener (this); chatTab.setTabListener (this); actionBar.addTab (testTab, गलत); एक्शनबार.एडटैब (चैटटैब, सच); GoogleMap मानचित्र = ((मानचित्रफ्रैग्मेंट) getFragmentManager () .findragmentById (R.id.map))। GetMap (); LatLng नक्शा केंद्र = नए लाटलांग (41.889, -87.622); LatLng mapCenter2 = नया लाट्लेंग (41.889, -85.622); map.addMarker (नया मार्कर ऑप्शन () .कॉन (बिटमैप डिस्क्रिप्टर फेटाइटर। फ्रॉम रिसोर्स (आरड्रॉवेबल.ओआरटीएयरिंग))। बिज़नस (नक्शा केंद्र)। फ्लाट (सच्चे)); map.addMarker (नया मार्कर ऑप्शन () .कॉन (बिटमैपडिस्क्रिप्टरफैरेटर। फ्रॉम रीसोर्स (R.drawable.orienteering))। रचना (नक्शा centre2)। फ्लाट (सच)); // कैमरापॉज़िट कैमरापोजीशन = कैमरापोजियन.बिल्डर () //। टार्गेट (मैप सेंन्ट) //। ज़ूम (13) // .बियरिंग (90) //। बिल्डर (); // map.moveCamera (CameraUpdateFactory.newLatLongZoom (// नई लाट लाँग (-18.142, 178.431), 2)); map.setMapType (GoogleMap.MAP_TYPE_HYBRID); // कैमरे के दृश्य में परिवर्तन 2 सेकंड से अधिक करें // map.animateCamera (CameraUpdateFactory.newCameraPosition (cameraPosition), // 2000, null); } @ ओवरराइड पब्लिक बूलियन ऑन क्रेट ऑप्शन मेन्यू (मेनू मेनू) {MenuInflater actionMenue = getMenuInflater (); एक्शनमेन्यूइन्फ्लैट (आर.मेनु.हे_मैप, मेनू); वापसी सुपर.कोनटेट ऑप्शन मेन्यू (मेनू); } @ ओवरराइड पब्लिक बूलियन ऑन ऑप्शन इटैम सिलेक्ट (मेनूइटम आइटम) {// हैंडल एक्शन बार आइटम यहां क्लिक करता है एक्शन बार स्वचालित रूप से होम / अप बटन पर क्लिकों को स्वचालित रूप से संभाल करेगा, इतने लंबे समय के रूप में / जब आप AndroidManifest.xml में एक अभिभावकीय गतिविधि निर्दिष्ट करते हैं। int id = item.getItemId (); अगर (आईडी == R.id.action_settings) {वापसी सच; } अगर (आईडी == आर.आईड.गो बैक) {this.finish (); वापस सच; } वापसी सुपर.ऑनॉप्शन आईटम चयनित (आइटम); } / ** * एक प्लेसहोल्डर टुकड़ा जिसमें एक साधारण दृश्य है। * / सार्वजनिक स्थैतिक वर्ग प्लेसहोल्डर फ्रेग्मेंट (सार्वजनिक प्लेसहोल्डर फ्रेगमेंट) () {} @ ओवरराइड सार्वजनिक देखें क्रेट दृश्य (लेआउटइफलटर इन्फ्लाटर, व्यू ग्रुप कंटेनर, बंडल सहेजे गए इन्स्टैंसस्टेट) {देखें रूटव्यू = इन्फ्लिएटर। फ्लैटेस्ट (आर। लेटाइफ्राममेंट_थ_मैप, कंटेनर, झूठे); वापसी रूट दृश्य; }} @TabSelected पर सार्वजनिक शून्य को ओवरराइड करें (टैब टैब, टुकड़ा प्रसारणसंपादित करें फीट) {int position = tab.getPosition (); स्विच (स्थिति) {मामला 0: // इंटेंट डिस्प्लेमाप्त = नया आशय (यह, मानचित्र। वर्ग); // प्रारंभप्रदर्शन (displayTheMap); // this.finish (); टोस्ट। मेक टेक्स्ट (getApplicationContext (), "केस 0", टोस्ट। एलएनएनजीएचआईएचओआरटी)। दिखाएं (); टूटना; मामला 1: टोस्ट। मेक टेक्स्ट (getApplicationContext (), "केस 1", टोस्ट। एलएनएनजीएचआईएचओआरटी)। दिखाएं (); इंटेंट डिस्प्लेक्षेत्र = नया आशय (यह, मानचित्र। वर्ग); startActivity (displayTheMap); this.finish (); टूटना; }} @TabUselected (टैब टैब, फ्रेगमेंटट्रांसैक्शन फीट) पर सार्वजनिक शून्य को ओवरराइड करें {// TODO स्वत: उत्पन्न पद्धति स्टब} @TabReslected (टैब टैब, फ्रेगमेंट ट्रांसजनैक्शन फ़ोर्ट) पर सार्वजनिक ओरेरराइड {// TODO स्वत: उत्पन्न विधि स्टब}}   

जैसा कि आप देख सकते हैं मैंने मैंने chatTab को चिह्नित किया है और मेरे पास दो मामलों में onTabSelected दोनों ही मामलों में टोस्ट दिख रहे हैं संदेश चुड़ैल का मामला चुना गया है।

अब मैं अपने मुख्य गतिविधि के अंदर से ऊपर मानचित्र वर्ग को कॉल कर रहा हूं:

  आशय प्रदर्शनमेट = नया आशय (यह, मानचित्र.क्लास); startActivity (displayTheMap);   

और इम्यूलेटर टोस्ट संदेश मामला 1 से अधिक बार और दिखा रहा है।

ऐसा क्यों हो रहा है? ऐसा क्यों है कि बार-बार गड़बड़ी का मामला 1 बार फिर से हो रहा है? क्या मामला 0 पहले से चयनित के रूप में चिह्नित नहीं है? मुझे पता है कि मैं यहां एक बहुत ही कम भाग को याद कर रहा हूं, लेकिन मैं इसे नहीं खोज सकता हूं।

  1. गतिविधि मानचित्र में, आप एक टैब जोड़ रहे हैं और इसे चुने गए हैं ( actionbar.addTab (chatTab, true );
  2. आपके पास एक टैबलाइस्टनर है जो मानचित्र गतिविधि फिर से शुरू करता है जब टैब चयनित होता है ( startActivity (displayTheMap); )

    आप सही हैं, यह एक अनंत लूप है।

    यदि आप चाहते हैं स्थिति 0 पर टैब प्रारंभिक रूप से चुने गए, फिर अपने दूसरे मापदंडों को स्वैप करें:

      actionBar.addTab (testTab, true); एक्शनबार। addTab (chatTab, false);    

Comments

Popular posts from this blog

Verilog Error: output or inout port "Q" must be connected to a structural net expression -

jasper reports - How to center align barcode using jasperreports and barcode4j -

c# - ASP.NET MVC - Attaching an entity of type 'MODELNAME' failed because another entity of the same type already has the same primary key value -