2014-06-10 2 views
1

저는 IOS 코더지만, 안드로이드를 조금 배우려고하고 있지만 문제가 있습니다.java.lang.ClassCastException : 부모에게 객체를 캐스팅하십시오.

나는 다음과 같은 클래스가 :

package com.example.fragmenttabhostdemo; 

import android.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class Tab1 extends Fragment { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     return inflater.inflate(R.layout.tab1, container, false); 
    } 
} 

내가 그것을 실행하려고 콘솔은 말한다 : 내가 잘못 무엇

java.lang.ClassCastException: com.example.fragmenttabhostdemo.Tab1 cannot be cast to android.support.v4.app.Fragment 

어떤 아이디어?

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

    tabHost = (FragmentTabHost) findViewById(R.id.tabhost); 

    tabHost.setup(this, getSupportFragmentManager(), R.id.tabcontent); 

    tabHost.addTab(tabHost.newTabSpec("Tab1").setIndicator("Lengueta 1"), Tab1.class, null); 
    tabHost.addTab(tabHost.newTabSpec("Tab2").setIndicator("Lengueta 2"), 
          Tab2.class, null); 
    tabHost.addTab(tabHost.newTabSpec("Tab3").setIndicator("Lengueta 3"), 
          Tab3.class, null); 
    } 

그래서, 내가 잘못 알고하지 않습니다 : 내 안드로이드 응용 프로그램 레이아웃의 조각 활동을 확인하고 호스트에 일부 탭을 추가 할 때 내가 생각하는 문제는 발생한다. 탭 레이아웃을 쉽게 만들 수있는 다른 아이디어는 없습니다.

경찰서. 나는이 튜토리얼을 따라하기 위해 노력하고있어 :

android.support.v4.app.Fragment 

당신은 지원 Fragment에 정기적 Fragment을 주조하고 있습니다 : http://www.androidcurso.com/index.php/tutoriales-android-basico/32-unidad-2-diseno-de-la-interfaz-de-usuario-vistas-y-layouts/452-fragmenttabhost

답변

5

힌트는 바로 여기이 부분이다. 이름이 같지만 다른 패키지에있는 두 클래스이기 때문에 혼란 스럽습니다. 본질적으로 지원 라이브러리를 사용하는 경우 모든 지원 유형을 고수해야합니다. 이를 염두에두고 Tab1 클래스에서 가져 오기 문에서 다음과 같이 변경하십시오.

//import android.app.Fragment; 
import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
+0

완벽한 답변 야, 멋진 눈! –

2

android.support.v4.app.Fragment으로 전송할 수 없다고 표시되어 있습니다. Fragment 파일에 android.app.Fragment의 가져 오기가 있습니다. 내 짐작은 수입이 꺼져 있다는 것입니다.

+0

괜찮아요.하지만 위의 사진은 꽤 특별합니다. :) 투표까지도 –

+0

아무런 문제가 없습니다. 타이핑하는 동안 게시되었습니다. :) – user489041

관련 문제