2011-10-18 6 views
1

私は3つの異なるタブ内で3つの異なるWebviewを開く小さなアプリケーションを作成しようとしています。現時点では、タブホストを作成して、Webviewの別のクラスを作成してもらえますが、アプリを開くと表示されません。TabHostでWebViewを開こうとしています

Tabhostコード

public class HelloTabWidgetActivity extends TabActivity { 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Resources res = getResources(); // Resource object to get Drawables 
    TabHost tabHost = getTabHost(); // The activity TabHost 
    TabHost.TabSpec spec; // Resusable TabSpec for each tab 
    Intent intent; // Reusable Intent for each tab 

    // Create an Intent to launch an Activity for the tab (to be reused) 
    intent = new Intent().setClass(this, HelloWebViewActivity.class); 

    // Initialize a TabSpec for each tab and add it to the TabHost 
    spec = tabHost.newTabSpec("albums").setIndicator("News", 
      res.getDrawable(R.drawable.ic_tab_albums)) 
     .setContent(intent); 
    tabHost.addTab(spec); 

    // Do the same for the other tabs 
    intent = new Intent().setClass(this, SongsActivity.class); 
    spec = tabHost.newTabSpec("songs").setIndicator("SaintsTV", 
         res.getDrawable(R.drawable.ic_tab_songs)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    intent = new Intent().setClass(this, ArtistsActivity.class); 
    spec = tabHost.newTabSpec("artists").setIndicator("Fixtures", 
         res.getDrawable(R.drawable.ic_tab_artists)) 
        .setContent(intent); 
    tabHost.addTab(spec); 

    tabHost.setCurrentTab(0); 
} 

}

私は問題を見ることができないと私はTabHostContentFactoryに関する他の人々の記事を読みましたが、私はどのように考えている

public class HelloWebViewActivity extends Activity { 
    WebView mWebView; 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mWebView = (WebView) findViewById(R.id.webview); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.loadUrl("http://www.google.com"); 
     mWebView.setWebViewClient(new HelloWebViewClient()); 
    } 
} 

のWebViewコードアプリが開くときにウェブビューをロードするようにします。どんな助けも大いに受け取ります。上記のコードはHelloWebViewチュートリアルとHelloTabWidgetチュートリアル

答えて

0

に基づいています

私は私が唯一の変更wihtあなたのコードの罰金を実行するので、それは、メインのレイアウトにあります、問題自体を前提としています

public class HelloWebViewActivity extends Activity { 
    WebView mWebView; 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     mWebView = new WebView(this); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.loadUrl("http://www.google.com"); 
     mWebView.setWebViewClient(new HelloWebViewClient()); 

     setContentView(mWebView); 
    } 
} 

Tabhostレイアウトファイルをタブにのみ使用することをお勧めします。また、webviewコントローラ(および他のインテントレイアウト)は他のレイアウトファイルに配置する必要があります。私はこれは私がしなかったことを考え出しいつか戻って、後で同じことをしようとした

+0

こんにちはありがとう、私はAndroid開発とJavaでちょっと新しいんだけど、どこにコードを置くのか分からないので少し答えを広げることができる。 –

+0

私は答えに詳しい、私はそれが助けて欲しい。そのチュートリアルは非常に良いです、あなたはクールなタブホストを持つ必要があるすべてを見つけることができます;) – petrumo

+0

恐ろしい歓声すべての作品:) –

2

を役に立てば幸い//joshclemm.com/blog/ P = 136

ます。http:?このためには、チュートリアルを使用することができますappのappropraiteインターネットアクセス許可を宣言します。これが理由で、tabhostのWebviewは空白になり、Logcatにもエラーはありませんでした。

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

上記の行をAndroidManifest.xmlに追加すると、私の問題は解決されました。

+0

はい、ACCESS_NETWORK_STATEはそれは私のためです。 –

関連する問題