2012-06-18 16 views
9

मैं maswebview क्लास को निष्पादित कर रहा हूं और मैं केवल यह गतिविधि समाप्त करना चाहता हूं। मैंने maswebview.this.finish() की कोशिश की लेकिन जब निष्पादित किया गया, ऐप बंद कर दिया गया है। फिर यदि मैं टैब सामग्री के लिए एक नया दृश्य सेट करता हूं, तो यह ठीक से लोड होता है और वेबव्यूमा गायब हो जाता है लेकिन थोड़ी देर के लिए, फिर फिर से पूर्णस्क्रीन फिट बैठता है। पूरी तरह से maswebview कैसे खत्म करें? ThanK आपएंड्रॉइड फिनिश वर्तमान गतिविधि ऐप को बंद करता है

public void onClick(View arg0) 
      { 
       /* 
       Intent intent = getIntent(); 
       intent.addFlags(Intent.FLAG_ACTIVITY_TASK_ON_HOME); 
       startActivityForResult(intent, 1); 
       Intent intentmas = new Intent (maswebview.this, mas.class); 
       intentmas.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
       intentmas.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       intentmas.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       intentmas.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); 
       View vista = getLocalActivityManager().startActivity("maswb", intentmas).getDecorView(); 
       setContentView(vista); */ 

       maswebview.this.finish(); 
+3

अपने अपवाद का पूरा स्टैक ट्रेस जोड़ें – Houcine

+2

आपको यहां अधिक प्रासंगिक कोड जोड़ना होगा, यह कुछ कहने के लिए पर्याप्त नहीं है। – Sajmon

+0

हां, क्षमा करें, कृपया संपादन देखें। लॉगकैट पर कोई अपवाद नहीं है, ऐप त्रुटियों के बिना बंद है – Jaume

उत्तर

5

आप बार जब आप खत्म फोन से ढेर में अपने ऐप के किसी भी अन्य गतिविधियों है()? यदि आप नहीं करते हैं, तो आप वर्तमान को खत्म करने की बजाय वांछित गतिविधि शुरू करना चाहेंगे।

लेकिन असल में ऐसा लगता है कि आप ऐसा कुछ करने की कोशिश कर रहे हैं जिसे सरल किया जा सकता है। क्या आप इस काम पर अधिक जानकारी प्रदान कर सकते हैं और आपकी ऐप संरचना आप इसके बारे में जाने की कोशिश कर रहे हैं?

आपने जो कहा उससे, ऐसा लगता है कि आपके पास टैबबंद यूआई है और आप टैब में से किसी एक में वेबव्यू दिखाने की कोशिश कर रहे हैं, फिर इसे छुपाएं।

सबसे पहले, मुझे नहीं लगता कि आप एक अलग गतिविधि में वेबव्यू क्यों चाहते हैं। मुझे लगता है कि आप इसे टैब में से किसी एक के लेआउट में रख सकते हैं और बस इसे छिपाने के लिए सेट दृश्यता (GONE) पर कॉल कर सकते हैं।

दूसरा - और इस महत्वपूर्ण है - TabWidget, TabHost, आदि के बाद से हनीकोम्ब जारी की गई है, वहाँ बहुत अधिक सुविधाजनक टैब किए यूआई लागू करने के लिए जिस तरह से है - आप टैब वर्ष तरह से लागू करने के लिए कोशिश कर रहे हैं की तरह लग रहा - Action Bar Tabs and Fragments - वह दृष्टिकोण अधिक सुविधाजनक है और आपकी वेबव्यू समस्याओं को अप्रचलित कर देगा: WebViewFragment नामक एक चीज़ है जो मूल रूप से एक वेब व्यू है लेकिन स्मार्ट - यह आपके द्वारा आवश्यक न्यूनतम प्रयास के साथ अपने जीवन चक्र को संभालेगी (यानी हटाए जाने पर रोकें, जोड़े जाने पर रोकें)। यह टुकड़ों पर अध्ययन करने के लिए कुछ प्रयास करेगा, लेकिन यह इसके लायक है। आप प्री-हनीकॉम एंड्रॉइड एसडीक्स के लिए एक स्थिर लाइब्रेरी के रूप में फ्रैगमेंट एपीआई प्राप्त कर सकते हैं - इसे एंड्रॉइड-सपोर्ट-वी 4 कहा जाता है और आप इसे एंड्रॉइड एसडीके मैनेजर में डाउनलोड कर सकते हैं।

+0

वेबव्यूफ्रैगमेंट पहुंचने के लिए एक शुरुआती बिंदु था!मैं आपकी मदद की बहुत सराहना करता हूं – Jaume

+0

आपका स्वागत है, खुशी है कि मैं मदद कर सकता हूं। –

2

क्या आप "maswebview.this.finish();" नई गतिविधि शुरू होने से पहले?

यदि आप अस्तित्व में पुरानी गतिविधि के बिना ही इस नई गतिविधि को शुरू करना चाहते हैं तो आप अपने manifest.xml में एंड्रॉइड: nohistory = "true" जोड़ सकते हैं। इससे वर्तमान गतिविधि कतार में एकमात्र गतिविधि होगी। HERE

आपको यह समझने के लिए थोड़ा और जानकारी प्रदान करने की आवश्यकता है कि वास्तव में क्या हो रहा है।

मुझे उम्मीद है कि इससे मदद मिलती है।

+0

दोनों विधियां पूरी तरह से काम नहीं करती हैं लेकिन शुरुआती बिंदु के रूप में अच्छा लिंक ... +1 – Jaume

0

कोशिश निम्नलिखित कोड

@Override 
     public void onBackPressed() { 
     if(childView != null && parentLayout.getChildCount()==2){ 
      childView.stopLoading(); 
      parentLayout.removeViewAt(parentLayout.getChildCount()-1); 
      if(webView.getVisibility() == View.GONE) 
       webView.setVisibility(View.VISIBLE); 
     }else{   
      super.onBackPressed(); 
     } 
0

क्या आपके पास एक मूल गतिविधि है जो इसे लॉन्च कर रही है? यदि हां सुनिश्चित करें कि आप maswebview लॉन्च करने के बाद फिनिश() को कॉल नहीं करते हैं, तो इस तरह पैरेंट गतिविधि स्टैक में रहेगी। एक बार maswebview बाहर निकलने के बाद, रेस्यूम को आपकी मूल गतिविधि के लिए बुलाया जाएगा।

संबंधित मुद्दे