2012-11-07 19 views
8

नहीं दिखा रहा है मेरे पास एक वेबव्यू के साथ डायलॉग फ्रैगमेंट है। यदि वेबदृश्य पृष्ठ को तेज़ी से लोड नहीं करता है, तो डायलॉगफ्रैगमेंट पूरी तरह से कम हो जाएगा और वेबव्यू नहीं दिखाएगा। अन्यथा, अगर लोडिंग तेज थी, तो वेब व्यू दिखाया गया है।एंड्रॉइड डायलॉग फ्रैगमेंट "कभी-कभी" वेबव्यू

उत्तर

9

मुझे अपने आप से समाधान मिला। यदि आप अपने संवाद प्रारूप के लिए रूट व्यू के रूप में LinearLayout का उपयोग करते हैं, तो ऐसा होगा, इसे फ्रेमलेआउट में बदलकर समस्या का समाधान हो जाएगा। मुझे समझ में नहीं आता क्यों, लेकिन यह काम करता है।

+2

मेरे मामले में जड़ दृश्य एक FrameLayout था और मैं उसे RelativeLayout में स्विच करने और यह जादुई काम किया ... बहुत ही अजीब। अब यह 'सामग्री का सही आकार नहीं है जिसका मतलब है कि यह mat_parent है, लेकिन यह मेरे लिए ठीक है। – for3st

0

आप AsyncTaks के माध्यम से वेब दृश्य संवाद टुकड़ा प्रदर्शित नहीं करता है क्योंकि AsyncTasks लेआउट जो मुख्य थ्रेड में है नहीं बदल सकते हैं लोड हो रहा है हो सकता है। इसे देखें।

1

मेरे मामले में, मैंने गतिशील ऊंचाई के लिए ExpandableHeightWebView जैसे कस्टम वेब व्यू का उपयोग किया।

@Override 
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
{ 
    if (isExpanded()) 
    { 

     int expandSpec = MeasureSpec.makeMeasureSpec(MEASURED_SIZE_MASK, 
       MeasureSpec.AT_MOST); 
     super.onMeasure(widthMeasureSpec, expandSpec); 

     ViewGroup.LayoutParams params = getLayoutParams(); 
     params.height = getMeasuredHeight(); 
    } 
    else 
    { 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
    } 
} 

मैं के बाद myWebView.loadData(data,null);
जब मैं setExpanded(true); लाइन को हटाना हल यह समस्या setExpanded(true); फोन कर रहा हूँ।

1

मैंने दो उपकरणों में कोशिश की।

पहले डिवाइस में नेक्सस 6 ने डेविड कहने के लिए काम किया "मुझे अपने आप से समाधान मिला। यदि आप अपने डायलॉगफ्रैगमेंट के लिए रूट व्यू के रूप में लिनियरलाउट का उपयोग करते हैं तो ऐसा होगा, इसे फ्रेमलेआउट में बदलकर समस्या का समाधान हो गया। मुझे समझ में नहीं आता क्यों, लेकिन यह काम करता है "। लेकिन मैंने दूसरे डिवाइस (गैलेक्सी प्राइम) और आश्चर्य में कोशिश की, काम नहीं किया। बाद की कोशिश की मेकअप setVisible कॉलबैक onPageFinished() अंदर कॉलबैक onPageStarted() अंदर और setVisible दिखाई के बाद मेरे WebViewClient में WebView चला गया और मेरे लिए काम किया।

public class MyWebClient extends WebViewClient { 
 

 
    private static final String LOG_CAT = "NetPayWebClient"; 
 

 
    @Override 
 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
 
     Log.e(LOG_CAT, "onPageStarted(): " + url); 
 
     view.setVisibility(View.GONE); 
 
     super.onPageStarted(view, url, favicon); 
 
    } 
 

 
    @Override 
 
    public void onPageFinished(WebView view, String url) { 
 
     Log.e(LOG_CAT, "onPageFinished(): " + url); 
 
     view.setVisibility(View.VISIBLE); 
 
     super.onPageFinished(view, url); 
 
    } 
 

 
}

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