我一直在尝试在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>
感谢您查看我的代码,这真的毁了我的一天无法让这个工作......
答案 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" />
缺乏许可不会导致你的程序崩溃,这只是确保你在清理和填充你的清单时所做的事情。