2012-04-23 16 views
5

Mam działanie fragmentu, który ma ListFragment po lewej stronie i fragment po prawej stronie, który ma WebView. Funkcjonowanie działa dobrze, ale chciałbym wyświetlić okno dialogowe postępu pokazujące "Ładowanie ...", gdy strona internetowa się ładuje. Jak mogę wykonać to pozornie banalne zadanie?Jak wyświetlić ProgressDialog przy użyciu fragmentu

Poniżej jest mój kod:

public class ArticleListActivity extends FragmentActivity implements 
    ArticleListFragment.OnArticleSelectedListener { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.articlelist_fragment); 
    } 

    public void onArticleSelected(String contentLink) { 
     ArticleViewerFragment viewer = (ArticleViewerFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.articleview_fragment); 

     if (viewer == null || !viewer.isInLayout()) { 
      Intent showContent = new Intent(getApplicationContext(), 
        ArticleViewerActivity.class); 

      showContent.setData(Uri.parse(contentLink)); 
      startActivity(showContent); 
     } else { 
      viewer.updateUrl(contentLink); 
     } 
    } 
} 

Oto moja FragmentActivity

public class ArticleViewerActivity extends FragmentActivity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.articleview_fragment); 

     Intent launchingIntent = getIntent(); 
     String content = launchingIntent.getData().toString(); 

     ArticleViewerFragment viewer = (ArticleViewerFragment) getSupportFragmentManager() 
       .findFragmentById(R.id.articleview_fragment); 

     viewer.updateUrl(content); 
    } 
} 

i tu jest moje Fragment

public class ArticleViewerFragment extends Fragment { 

    private ProgressDialog progressBar; 

    private WebView viewer = null; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     viewer = (WebView) inflater.inflate(R.layout.webview_layout, container, false); 
     viewer.loadUrl("file:///android_asset/default.html"); 
     return viewer; 
    } 

    public void updateUrl(String newUrl) { 
     if (viewer != null) { 
      viewer.loadUrl(newUrl); 
     } 
    } 
} 

Odpowiedz

1

użyć tego kodu:

final ProgressDialog pd = ProgressDialog.show(this, "", "Loading...", true); 
pd.setCancelable(false); 

webview.getSettings().setJavaScriptEnabled(true); 
webview.getSettings().setSupportZoom(true); 
webview.getSettings().setBuiltInZoomControls(true); 
webview.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     if (pd != null && pd.isShowing()) { 
      pd.dismiss(); 
     } 
    } 
}); 
webview.loadUrl("file:///android_asset/default.html"); 
Powiązane problemy