WebView Inside TabView失败

时间:2010-08-28 14:58:58

标签: android webview

我一直在尝试在TabView的其中一个标签中添加一个WebView,但它无法正常工作。 当我转到其他选项卡时,我只有TextViews并且它们工作正常,但是当我单击带有Web的选项卡时,错误会意外关闭。 这是我的search_result.java,它有tabview

package supa.mack.doppler;

import android.app.Activity;
import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TabHost;

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

     TabHost mTabHost;
     mTabHost = getTabHost();

     mTabHost.addTab(mTabHost.newTabSpec("Results").setIndicator("Results").setContent(R.id.textview1));
     mTabHost.addTab(mTabHost.newTabSpec("Location").setIndicator("Location").setContent(R.id.textview2));
     mTabHost.addTab(mTabHost.newTabSpec("Facebook")
       .setIndicator("Facebook")
       .setContent(new Intent(this, BioActivity.class)));

     mTabHost.setCurrentTab(0);


 Button searchButton=(Button) findViewById(R.id.return_button);
    searchButton.setOnClickListener(new View.OnClickListener(){
   public void onClick(View v) {
   Intent intent=new Intent(
     search_result.this,
     doppler_test.class
     );

    startActivity(intent);
   }
});  
}
}

现在这里是定义tabView的search_result.xml

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"/>
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" android:layout_gravity="center_horizontal">
        <TableLayout 
   android:id="@+id/TableLayout01" 
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent" android:layout_gravity="center_horizontal" android:gravity="center_horizontal">

         <Button
      android:id="@+id/return_button"
      android:layout_height="wrap_content" 
      android:text="Return" 
      android:layout_width="fill_parent"/>  

          <TableRow>
           <TextView 
                android:id="@+id/textview1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:text="Here is the list of people in your location" />
            <TextView 
                android:id="@+id/textview2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" 
                android:text="Here you will see your exact location to bookmark it" />
            <TextView 
                android:id="@+id/textview3"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" 
                android:text="Reference Facebook To Check The One You Seek" />
        </TableRow>
      </TableLayout>
    </FrameLayout>
   </LinearLayout>
</TabHost>

这是BioActivity.java,其中定义了webView

package supa.mack.doppler;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

public class BioActivity extends Activity {
 WebView browser;

 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.web_view);

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

最后,这是放置webView的web_view.xml

<?xml version="1.0" encoding="utf-8"?>
<WebView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
/>

O,差点忘了添加我的清单......

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="supa.mack.doppler"
      android:versionCode="1"
      android:versionName="1.0">
        <application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
        <activity android:name=".doppler_test"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  <activity android:name=".search_result"> 
  <activity android:name=".search_result" android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar"/>
        <activity android:name=".BioActivity" android:label="@string/app_name"
      android:theme="@android:style/Theme.NoTitleBar"/>
  </activity>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.INTERNET" />
    </application>
        <uses-sdk android:minSdkVersion="7" />


</manifest> 

感谢您查看我的代码,这真的毁了我的一天无法让这个工作......

2 个答案:

答案 0 :(得分:0)

我感觉你的web_view.xml格式不正确,需要一个linearlayout或relativelayout。我几乎完全相同的程序工作,我的web_view.xml文件看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainlayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<WebView android:id="@+id/webview"
android:layout_height="fill_parent"
android:layout_width="fill_parent"/>
</RelativeLayout>

您还可以尝试通过代码创建新的Web视图,而不必担心XML布局。如果您计划拥有的是webview并且不需要重复使用该文件,则可以使用它。

编辑:我刚测试了你的XML方法。它似乎是有效的,工作得很好。然而,我注意到调用BioActivity的方法可能不正确。例如,我使用这样的东西:

intent = new Intent().setClass(this, BioActivity.class);  
mTabHost.addTab(mTabHost.newTabSpec("Facebook") 
       .setIndicator("Facebook") 
       .setContent(intent)); 

尝试一下,让我们知道它是如何工作的。我也相信你的按钮监听器应该在onCreate方法之外。

答案 1 :(得分:0)

您的清单也可能不正确。您的应用程序标记未关闭,您有重复的活动,并且不需要每个活动的标签和主题。为了使互联网正常工作,您还需要添加此权限:

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

缺乏许可不会导致你的程序崩溃,这只是确保你在清理和填充你的清单时所做的事情。