我已经搜索过,我知道似乎有些人不喜欢在选项卡中使用活动,但超越了这一点......我将如何重新启动选项卡式活动,同时仍然保持选项卡可见?我在选项卡中有一个活动,我使用菜单创建一个新活动来更新选项卡的活动显示信息,当我从菜单活动返回时,我希望新信息显示在选项卡的活动中。我正在使用菜单选项中的 startActivityForResult(),但是当我返回并尝试重新启动活动时......它会清除上面的选项卡(我猜是预期的,但我想在选项卡中重新启动刷新的活动) .
创建选项卡:
TabHost host = getTabHost();
Intent home_intent = new Intent(constants.HOME_ACTION,
null, this, homeTab.class);
Intent inbox_intent = new Intent(constants.INBOX_ACTION,
null, this, inboxTab.class);
Intent stats_intent = new Intent(constants.STATS_ACTION, null,
this, infoTab.class);
host.addTab(host.newTabSpec(constants.HOME_TAG)
.setIndicator(getText(R.string.home_label),
getResources().getDrawable(R.drawable.icon))
.setContent(home_intent));
host.addTab(host.newTabSpec(constants.INBOX_TAG)
.setIndicator(getText(R.string.inbox_label),
getResources().getDrawable(R.drawable.icon))
.setContent(inbox_intent));
host.addTab(host.newTabSpec(constants.STATS_TAG)
.setIndicator(getText(R.string.stats_label),
getResources().getDrawable(R.drawable.icon)).setContent(
stats_intent));
从选项卡活动中的菜单活动返回(更新数据库信息):
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (constants.ACTIVITY_REQUEST_CODE_UPDATE_PROFILE) : {
if (resultCode == Activity.RESULT_OK) {
boolean profileUpdated = data.getBooleanExtra(constants.ACTIVITY_BUNDLE_UPDATE_PROFILE, false);
Log.d(LOG_TAG, "activity returned with " + profileUpdated);
// Check to see if we updated our profile to refresh the screen
if(profileUpdated == true){
// Refresh the screen with the new info
homeTab.this.finish();
this.startActivity(getIntent());
}
}
break;
}
}
}