2015-12-09 2 views
0

Я следую образцу, представленному в этой ссылке, чтобы создать TabHost. Но я получил ошибку «Fatal Exception». ->http://developer.android.com/reference/android/app/TabActivity.htmlДобавление Tabhost к проекту android

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    tools:context="polimi.aap.yas.personalhealthrecord.MainActivity"> 


    <android.support.v4.app.FragmentTabHost 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@android:id/tabhost" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <TabWidget 
       android:id="@android:id/tabs" 
       android:orientation="horizontal" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="0"/> 

      <FrameLayout 
       android:id="@android:id/tabcontent" 
       android:layout_width="0dp" 
       android:layout_height="0dp" 
       android:layout_weight="0"/> 

      <FrameLayout 
       android:id="@+id/realtabcontent" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1"/> 

     </LinearLayout> 
    </android.support.v4.app.FragmentTabHost> 
</RelativeLayout> 

MainActivity.java

package polimi.aap.yas.personalhealthrecord; 
    import android.os.Bundle; 
    import android.support.v4.app.FragmentActivity; 
    import android.support.v4.app.FragmentTabHost; 


    public class MainActivity extends FragmentActivity { 


     private FragmentTabHost mTabHost; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

     mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); 
     mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); 
     mTabHost.addTab(mTabHost.newTabSpec("t1").setIndicator("Login"),Login.class,null); 
     mTabHost.addTab(mTabHost.newTabSpec("t2").setIndicator("Register"),SignUp.class,null); 


    } 
} 

build.gradle (модуль: приложение)

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

    useLibrary 'org.apache.http.legacy' 


    defaultConfig { 
     applicationId "polimi.aap.yas.personalhealthrecord" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:support-v4:23.1.1' 
} 

И, наконец, этого LogCat

12-09 14: 53: 14.184 3570-3570 /? D/dalvikvm: не поздний запуск CheckJNI (уже включен) 12-09 14: 53: 14.314 3570-3570 /? D/AndroidRuntime: выключение VM 12-09 14: 53: 14.314 3570-3570 /? W/dalvikvm: threadid = 1: выход с отключенным исключением (группа = 0xb1777678) 12-09 14: 53: 14.334 3570-3570 /? E/AndroidRuntime: FATAL EXCEPTION: main java.lang.ClassCastException: polimi.aap.yas.personalhealthrecord.Login нельзя отнести к android.support.v4.app.Fragment на android.support.v4.app.Fragment.instantiate (Fragment.java:423) на android.support.v4.app.FragmentTabHost.doTabChanged (FragmentTabHost.java:343) на android.support.v4.app.FragmentTabHost.onAttachedToWindow (FragmentTabHost.java:280) на андроид .view.View.dispatchAttachedToWindow (View.java:12125) на android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2453) на android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2460) на android.view .ViewGroup.dispatchAtta chedToWindow (ViewGroup.java:2460) на android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2460) на android.view.ViewGroup.dispatchAttachedToWindow (ViewGroup.java:2460) в android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:1207) на android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1004) в android.view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:5481) в android.view.Choreographer $ CallbackRecord. (Хореограф.ява: 749) на android.view.Choreographer.doCallbacks (Хореограф.java:562) на android.view.Choreographer.doFrame (Хореограф.java:532) на droid.view.Choreographer $ FrameDisplayEventReceiver.run (Хореограф.ява: 735) на android.os.Handler.handleCallback (Handler.java:730) на android.os.Handler.dispatchMessage (Handler.java:92) at android.os.Looper.loop (Looper.java:137) на android.app.ActivityThread.main (ActivityThread.java:5103) на java.lang.reflect.Method.invokeNative (собственный метод) на java.lang .reflect.Method.invoke (Method.java:525) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:737) at com.android.internal.os.ZygoteInit.main (ZygoteInit .java: 553) at dalvik.system.NativeStart.main (родной метод) 12-09 14: 58: 15.149 3570-3570 /? I/Процесс: сигнал отправки. PID: 3570 SIG: 9

У вас возникли проблемы?заблаговременно за вашу помощь. Позвольте мне добавить мою цель, написав этот код. Мне нужно, чтобы tabhost показывал две вкладки (Вход и Регистрация). и заполнить содержимое каждой вкладки с помощью соответствующего макета (login.xml и signup.xml).

Login.java

package polimi.aap.yas.personalhealthrecord; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class Login extends AppCompatActivity { 

    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
    } 
} 
+0

Не мог бы вы опубликовать Войти класс? – RafaelC

+0

Я редактировал вопрос и добавлял класс входа. – Jasmine

ответ

0

Ваша проблема в том, что ваш Login класс является AppCompatActivity, а не Fragment.

Когда вы добавляете вкладку в TabHost, вы должны передать .class, как и вы. Однако этот .class должен быть от Fragment, а не AppCompatActivity.

Так оно и должно быть

mTabHost.addTab(mTabHost.newTabSpec("t1").setIndicator("Login"),Login.class,null); 

где

public class Login extends Fragment { 
    /**/ 
} 
+0

Спасибо! К сожалению Снова у меня проблема! Я изменил оба класса SignUp и Login. но все же это фатальное исключение. – Jasmine

+0

@Yasi Вы импортировали правильный фрагмент? т. е. 'import android.support.v4.app.Fragment;' и __NOT__ 'import android.app.Fragment;' – RafaelC

+0

Wow! спасибо, это была проблема на самом деле. @RafaelCardoso :) – Jasmine

Смежные вопросы