2012-04-23 14 views
5

左にListFragmentを持ち、WebViewを持つ右にフラグメントを持つFragmentアクティビティがあります。機能は正常に動作しますが、Webページの読み込みが完了している間に、「読み込み中...」を示す進捗ダイアログを表示したいと思います。私はこの一見些細な仕事をどうやって達成することができますか?以下はフラグメントを使用してProgressDialogを表示する方法

は私のコードです:ここでは

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

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

であり、ここで私のフラグメントは、このコードを使用し

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

答えて

1

です:

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"); 
関連する問題