我有两个标签报告和图表。在图表选项卡中,我点击了一个按钮即可显示另一个活动“图表”。现在,在“图形”活动中,单击按钮,我想切换到报告选项卡,而不是回到图表选项卡。
所以在活动“图表”中,我认为我应该这样做,
final TabHost tabHost = (TabHost) getParent().findViewById(android.R.id.tabHost);
btnBackToReports.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
tabHost.setCurrentTab(1);
}
});
如果在TabActivity类的xml中创建tabhost,这可能会起作用。但我不是在xml中创建tabhost。所以,我做不到findViewById(android.R.id.tabhost)
。我正在这样的java文件中创建它,
TabHost tabHost = getTabHost();
TabHost.TabSpec chartsSpec = tabHost.newTabSpec("charts").setIndicator("Charts")
.setContent(new Intent(this, Charts.class));
tabHost.addTab(chartsSpec);
那么我现在如何获得tabHost的id?是否可以通过编程方式将ID设置为tabHost?
非常感谢任何帮助。
答案 0 :(得分:1)
变体1)(删除,是愚蠢的)
变体2) 您可以从想要更改选项卡的活动发送广播,到托管选项卡的活动以及您可以访问tabhost的广播接收器中发送广播。
答案 1 :(得分:1)
您无法将一个活动的UI更改为另一个活动(好吧,它可能可能,但不要尝试)。
最佳选择是在启动图表活动时使用startActivityForResult
。
然后,当有人点击您的按钮时,您可以执行
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("selected_tab", 1);
setResult(Activity.RESULT_OK);
finish();
}
并在您的活动中使用标签
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK && data != null) {
int selectedTab = intent.getIntExtra("selected_tab", 0);
if (selectedTab == 1) {
tabHost.setCurrentTab(1);
}
}
}