2012-10-04 3 views
0

한 탭에서 다른 탭으로 전환하고 싶습니다. 이를 위해 아래 코드를 사용하고 있습니다 :android 한 탭에서 다른 탭으로 전환 할 수 없습니다.

public void switchTabInActivity(int indexTabToSwitchTo){ 
    AccidentTabActivity ParentActivity; 
    ParentActivity = (AccidentTabActivity) getParent(); // here i am getting exception 
    ParentActivity.switchTab(indexTabToSwitchTo); 
    } 

나는이 방법을 탐색하고 싶습니다.

하지만 캐스트 클래스는 예외입니다.

로그인 고양이 :

10-04 15:39:22.327: ERROR/AndroidRuntime(1016): FATAL EXCEPTION: main 
10-04 15:39:22.327: ERROR/AndroidRuntime(1016): java.lang.ClassCastException: com.project.AccidentApp.TabGroupHomeActivity 
10-04 15:39:22.327: ERROR/AndroidRuntime(1016):  at com.project.AccidentApp.KnowWhatToDoMenuActivity.switchTabInActivity(KnowWhatToDoMenuActivity.java:189) 
10-04 15:39:22.327: ERROR/AndroidRuntime(1016):  at com.project.AccidentApp.KnowWhatToDoMenuActivity$3.onClick(KnowWhatToDoMenuActivity.java:155) 
10-04 15:39:22.327: ERROR/AndroidRuntime(1016):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:159) 
10-04 15:39:22.327: ERROR/AndroidRuntime(1016):  at android.os.Handler.dispatchMessage(Handler.java:99) 
10-04 15:39:22.327: ERROR/AndroidRuntime(1016):  at android.os.Looper.loop(Looper.java:130) 
10-04 15:39:22.327: ERROR/AndroidRuntime(1016):  at android.app.ActivityThread.main(ActivityThread.java:3683) 
10-04 15:39:22.327: ERROR/AndroidRuntime(1016):  at java.lang.reflect.Method.invokeNative(Native Method) 
10-04 15:39:22.327: ERROR/AndroidRuntime(1016):  at java.lang.reflect.Method.invoke(Method.java:507) 
10-04 15:39:22.327: ERROR/AndroidRuntime(1016):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
10-04 15:39:22.327: ERROR/AndroidRuntime(1016):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
10-04 15:39:22.327: ERROR/AndroidRuntime(1016):  at dalvik.system.NativeStart.main(Native Method) 

업데이트]

TabGroupHomeActivity.java

public class TabGroupHomeActivity extends TabGroupActivity{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     startChildActivity("KnowWhatToDoMenuActivity", new Intent(this,KnowWhatToDoMenuActivity.class)); 
    } 


} 

AccidentTabActivity.java

public class AccidentTabActivity extends TabActivity 
{ 
    private TabHost tabHost; 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main_tab); 

     tabHost = getTabHost(); // The activity TabHost 
     TabHost.TabSpec spec; // Resusable TabSpec for each tab 
     Intent intent; // Reusable Intent for each tab 

     ///////////////////////////// 
     intent = new Intent().setClass(this,TabGroupHomeActivity.class); 
     // Initialize a TabSpec for each tab and add it to the TabHost 
     spec = tabHost.newTabSpec("Menu").setIndicator(prepareTabView("Menu",R.drawable.menul)).setContent(intent); 
     tabHost.addTab(spec); // error at this line 

     intent = new Intent().setClass(this,TabGroupStepsActivity.class); 
     // Initialize a TabSpec for each tab and add it to the TabHost 
     spec = tabHost.newTabSpec("Steps").setIndicator(prepareTabView("Steps",R.drawable.tab_step)).setContent(intent); 
     tabHost.addTab(spec); 

     intent = new Intent().setClass(this,TabGroupProfileActivity.class); 
     // Initialize a TabSpec for each tab and add it to the TabHost 
     spec = tabHost.newTabSpec("Profile").setIndicator(prepareTabView("Profile",R.drawable.tab_profile)).setContent(intent); 
     tabHost.addTab(spec);  

     intent = new Intent().setClass(this,TabGroupContactUsActivity.class); 
     // Initialize a TabSpec for each tab and add it to the TabHost 
     spec = tabHost.newTabSpec("Contact").setIndicator(prepareTabView("Menu",R.drawable.tab_contact)).setContent(intent); 
     tabHost.addTab(spec); 


     tabHost.setCurrentTab(0); 




    } 

    private View prepareTabView(String text, int resId) { 
     View view = LayoutInflater.from(this).inflate(R.layout.tabs, null); 
     ImageView iv = (ImageView) view.findViewById(R.id.tabImageView); 
     TextView tv = (TextView) view.findViewById(R.id.tabTextView); 
     iv.setImageResource(resId); 
     tv.setText(text); 
     return view; 
    } 

    public void switchTab(int tab){ 

     //getLocalActivityManager().getActivity(tab); 
      //String strTab = ""+tab; 
      tabHost.setCurrentTab(tab); 


    } 
} 
+0

하나씩 두 개의 탭이 필요합니다. ----------------------- – NagarjunaReddy

+0

@ 업데이트 된 질문보기. –

답변

1

봅니다 ..

대신 개인 TabHost tabHost를 정적 tabhost 선언하고 다음과 같이 자식 활동에 호출;

시도 정적 tabHost tabHost;

그리고 당신의 아이 활동 당신이 원하는대로

AccidentTabActivity.tabHost.setCurrentTab(2); 

그런 다음 당신은 당신의 현재 탭을 설정할 수있는.

0

예외에서 getParent()AccidentTabActivity의 인스턴스를 제공하지 않습니다. AccidentTabActivityTabGroupHomeActivity 수업을 표시 할 수 있습니까? 나는 우리가 당신이 수업을하지 않고 디버그하는 것을 도울 수있을 것이라고 생각하지 않습니다.

Ps : Java 규칙은 코드에서와 같이 변수 이름을 대문자로 시작하지 않도록 규정합니다. AccidentTabActivity ParentActivity;http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html을 참조하십시오. 비판은 아니지만 코드가 더 읽기 쉽습니다.

+0

자바 협약에 대한 지시에 대해 감사드립니다. 하지만 그 데모 코드. –

+0

업데이트 된 질문보기. –