2012-10-04 123 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

@NagarjunaReddy:查看更新后的问题。 –

回答

1

试图声明tabhost静态和下面的子活动,称之为..

相反私人TabHost tabHost;

尝试static 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

感谢有关java约定的指示。但它是一个演示代码。 –

+0

查看更新的问题。 –

相关问题