2011-06-30 15 views
7

के साथ काम करता है मेरे पास एक साधारण गतिविधि है जो केवल दो बटन दिखाती है, और जैसे ही कोई लोडिंग समाप्त हो जाता है, मैं एक और गतिविधि लोड करना चाहता हूं।ऑनक्रेट में एक नई गतिविधि शुरू करने में केवल

@Override 
public void onCreate(Bundle savedInstanceState) { 
    dbg("starting on create"); 
    super.onCreate(savedInstanceState); 

    dbg("stting content view"); 
    setContentView(R.layout.main); 

    createDrPopup(); 

} 

private void createDrPopup(){ 
    dbg("created new activity"); 
    startActivityForResult(new Intent(this, DrPopup.class), 
          DR_POPUP_ACTIVITY_ID); 
} 

मुझे इस कोड के साथ कोई त्रुटि नहीं है, लेकिन नई गतिविधि ठीक से लोड नहीं होती है। इस तरह मुझे केवल एक ब्लैंक स्क्रीन मिलती है।

लेकिन यदि मैं देरी के साथ नई गतिविधि को कॉल करता हूं, तो सब कुछ ठीक काम करता है।

वहाँ एक गतिविधि लोड हो रहा है समाप्त होने की प्रतीक्षा के लिए किसी भी बेहतर तरीका है:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    dbg("starting on create"); 
    super.onCreate(savedInstanceState); 

    dbg("stting content view"); 
    setContentView(R.layout.main); 

    Thread splashTread = new Thread() { 
     @Override 
     public void run() { 
      try { 
       sleep(500); 
      } catch(InterruptedException e) { 
      } finally { 
       createDrPopup(); 
      } 
     } 
    }; 
    splashTread.start(); 
} 

private void createDrPopup(){ 
    dbg("created new activity"); 
    startActivityForResult(new Intent(this, DrPopup.class), 
          DR_POPUP_ACTIVITY_ID); 
} 

मेरे सवाल यह है। मैं यह भी सुनिश्चित नहीं कर सकता कि हर बार 500 एमएमएस पर्याप्त होगा।

किसी भी सुझाव के लिए धन्यवाद।

dr_popup के लिए कोड का अनुरोध किया

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    dbg("Created new activity"); 

    setContentView(R.layout.dr_webview); 
    dbg("web view created"); 

} 

और दोनों लेआउट

मुख्य

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
    <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> 
    <Spinner android:layout_height="wrap_content" android:layout_weight="1" android:layout_width="wrap_content" android:id="@+id/spinner1"></Spinner> 
</LinearLayout> 

पॉपअप

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dr_popup_webview_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> 
    <WebView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dr_popup_webview" android:layout_width="fill_parent" android:layout_height="100dip"/> 
    <LinearLayout android:id="@+id/frameLayout1" android:layout_height="100dip" android:layout_width="fill_parent" android:orientation="horizontal"> 
     <EditText android:id="@+id/dr_submit_text"   android:layout_height="wrap_content"   android:layout_width="wrap_content"   android:layout_weight="4"> 
      <requestFocus></requestFocus> 
     </EditText> 
     <Button    android:text="Button"   android:id="@+id/dr_submit_button"   android:layout_height="wrap_content" android:layout_width="wrap_content" android:layout_weight="1"></Button> 
    </LinearLayout> 
</LinearLayout> 

संपादित (इस रूप में यह हो जाता है के रूप में सरल है): समस्या से ईएमएस प्रकट लाइन @Android की वजह से करने के लिए किया जा: शैली/Theme.Dialog

<activity android:theme="@android:style/Theme.Dialog" 
       android:name=".DrPopup" 
       android:label="@string/dr_popup"> 
    </activity> 

अगर मैं हटाने चीजें काम करने लगते हैं कि, है, लेकिन मैं एक समाधान है कि लाइन के साथ भी काम करेगा चाहते हैं।

और एक तस्वीर जो समस्या को दिखाती है। http://i.imgur.com/ZOcyw.png

+0

हाय क्या आप DrPopup के लिए कोड भी प्रदान कर सकते हैं। – Deva

+1

ठीक है, मुझे निश्चित रूप से पता नहीं है, लेकिन शायद गतिविधि प्रबंधक एक नई गतिविधि शुरू करने में संभाल नहीं सकता है जब कोई अन्य गतिविधि अभी भी क्रिएट() जीवन चक्र विधि में है। टाइमर ऑनक्रेट() को पूरा करने के लिए पर्याप्त समय की अनुमति देता है ... –

+0

मैंने कोड और एक्सएमएल फाइलों को भी जोड़ा है, और मुझे जोड़ना चाहिए कि मैं एंड्रॉइड 1.5 – zidarsk8

उत्तर

5

मुझे प्रदान किए गए कोड से कोई कारण नहीं दिख रहा है, आपको 500 एमएस देरी क्यों डालना है ... यह देरी डालने के लिए सिर्फ एक गैर-समझ है। कुछ स्पष्टीकरण की आवश्यकता है: 1. क्या आपने मूल गतिविधि के भीतर भारी प्रक्रिया की है? 2. startActivityForResult को उद्देश्य के साथ बुलाया जाता है (क्योंकि आपके कोड के टुकड़े एक्टिविटी रिसैट कार्यान्वयन पर कोई भी नहीं दिखाते हैं)?

मैं एक न्यूनतम उदाहरण को लागू करने और पद asap अद्यतन करने के लिए कोशिश करेंगे ...

- अद्यतन

को समझते हैं और एक समानांतर बातचीत सत्र के साथ इस मुद्दे को ठीक करने के लिए कई प्रयासों के बाद, मैं एक पर समस्या reproduced ताजा 1.5 एमुलेटर। समस्या फिनली एंड्रॉइड के उपयोग से आता है: थीम = "@ एंड्रॉइड: स्टाइल/थीम। डियालॉग" कैली गतिविधि के लिए। यह मुद्दा एंड्रॉइड 1.5 (डिवाइस और एमुलेटर दोनों) पर मनाया जाता है। जो भी अन्य लेआउट में घोषित किया जाता है, जब भी संबंधित गतिविधि शुरू होती है, कुछ भी प्रदर्शित नहीं होता है। डिस्प्ले बस खाली है और बैक बटन पर एक धक्का गतिविधि के क्षणिक प्रदर्शन को शुरू करता है लेकिन पहली गतिविधि पर जाता है (बाद में हिस्सा नाममात्र है)। मैं यह नहीं समझा सकता कि ऐसा क्यों होता है और मैं पॉपअपविंडो को एक कस्टम शैली (परीक्षण/त्रुटि दृष्टिकोण एंड्रॉइड थीम.डियोलॉग स्रोत परिभाषा के आधार पर) को परिभाषित करने या परिभाषित करने के लिए zidarsk8 को सुझाव देता हूं।

+0

पर काम कर रहा हूं, मैं सहमत हूं कि यह कुल बकवास है, यही वह है मैं यहां पूछ रहा हूं, क्योंकि मुझे नहीं पता कि यह केवल देरी के साथ क्यों काम करेगा। लेकिन ऐसा लगता है कि मामला है। – zidarsk8

+0

मैंने अभी ऑनस्टार्ट से कोशिश की, लेकिन नतीजा वही है, देरी के बिना शुरू करने से बिना किसी बटन या कुछ भी नई गतिविधि होती है। – zidarsk8

+0

यह बिना देरी के (यहां एक सादे प्रारंभ गतिविधि के साथ) काम करता है सिवाय इसके कि WebView अन्य लेआउट तत्वों के बाद प्रकट होता है। – Renaud

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