2012-04-23 14 views
5

Tengo una actividad Fragment que tiene un ListFragment a la izquierda y un Fragment a la derecha que tiene una WebView. La funcionalidad funciona bien, pero me gustaría mostrar un cuadro de diálogo de progreso que muestre "Cargando ..." mientras la página web termina de cargarse. ¿Cómo puedo lograr esta tarea aparentemente trivial?¿Cómo se muestra ProgressDialog usando el Fragmento

A continuación es mi código:

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); 
     } 
    } 
} 

Aquí es mi 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); 
    } 
} 

y aquí está mi Fragmento

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); 
     } 
    } 
} 

Respuesta

1

Usar este código:

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"); 
Cuestiones relacionadas