あるタブから別のタブに切り替えたい。そのために私は以下のコードを使用しています:
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);
}
}