Ошибка WebView Inside TabView - PullRequest
       3

Ошибка WebView Inside TabView

1 голос
/ 28 августа 2010

Я пытался добавить WebView внутри одной из вкладок в TabView, но он не работает. Когда я перехожу на другие вкладки, у меня просто есть TextViews, и они работают нормально, но как только я нажимаю на вкладку с веб-страницей, ошибка неожиданно закрывается. вот мой search_result.java, у которого есть вкладка

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

Теперь вот search_result.xml, где определяется tabView

<?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, где определен веб-вид

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

И, наконец, это web_view.xml, в который помещается webView

<?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 голосов
/ 29 августа 2010

Ваш манифест также может быть неверным.Ваш тег приложения не закрыт, у вас есть повторяющиеся действия, а ярлыки и тема для каждого действия не являются необходимыми.Для того, чтобы интернет работал, вам также нужно добавить это разрешение:

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

Отсутствие разрешения, конечно, не приведет к сбою вашей программы, просто было бы что-то, чтобы убедиться, что у вас естьвыполняется вместе с очисткой и обработкой вашего манифеста.

0 голосов
/ 29 августа 2010

У меня такое ощущение, что ваш web_view.xml не отформатирован должным образом и требует линейного или относительного размещения.У меня работает почти та же самая программа, и мой файл 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>

Вы также можете попробовать создать новое веб-представление с помощью кода, не заботясь о макете XML.Вы можете использовать это, если все, что вы планируете иметь, это веб-просмотр и вам не нужно повторно использовать файл.

РЕДАКТИРОВАТЬ: Я только что проверил ваш метод XML.Кажется, что он действителен и работает просто отлично.Однако я замечаю, что, возможно, метод вызова BioActivity является неправильным.Например, я использую что-то вроде этого:

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

Попробуйте и дайте нам знать, как это работает.Я также считаю, что ваш слушатель кнопки должен быть вне метода onCreate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...