Я искал и знаю, что некоторые люди недовольны использованием действий на вкладках, но переходя мимо этого ... как бы я перезапустил действие с вкладками, сохраняя вкладки видимыми? У меня есть действие на вкладке, я использую меню для создания нового действия, чтобы обновить информацию, отображаемую на вкладке, когда я возвращаюсь из действия в меню, я хочу, чтобы новая информация отображалась в действии вкладки. Я использую 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;
}
}
}