【发布时间】:2012-01-07 12:04:33
【问题描述】:
我有一个TabActivity,第一个标签是ActivityGroup,我为此使用下面的代码;
public class MyTabActivity extends TabActivity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TabHost tabHost = getTabHost();
TabHost.TabSpec tabSpec;
Intent intent;
Resources resources = getResources();
intent = new Intent(MyTabActivity.this, MyActivityGroup.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
tabSpec = tabHost.newTabSpec("tab1");
tabSpec.setIndicator("Tab1", resources.getDrawable(R.drawable.ic_launcher));
tabSpec.setContent(intent);
tabHost.addTab(tabSpec);
intent = new Intent(MyTabActivity.this, SecondTab.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
tabSpec = tabHost.newTabSpec("tab2");
tabSpec.setIndicator("Tab2", resources.getDrawable(R.drawable.ic_launcher));
tabSpec.setContent(intent);
tabHost.addTab(tabSpec);
tabHost.setCurrentTab(0);
}
}
在我的ActivityGroup 中,我想在button 之后点击另一个Activity,因此我使用下面的代码:
public class MyActivityGroup extends ActivityGroup
{
private Button button;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_group);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
// TODO Auto-generated method stub
Intent intent = new Intent(MyActivityGroup.this, FirstActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
View view = getLocalActivityManager().startActivity("firstActivity", intent).getDecorView();
setContentView(view);
}
});
}
}
它可以工作,但是有一个问题,当我在FirstActivity 中单击第一个选项卡时,我无法转到MyActivityGroup。但是例如点击SecondTab后,如果我点击第一个标签,我可以转到MyActivityGroup。
为了解决这个问题,我认为我应该更改 Intent 标志,但我无法管理它。请帮帮我。
【问题讨论】:
-
就像我说的,如果您在第一个选项卡中并且更深一层,则选项卡主机不会刷新活动组并转到组的根目录。你必须按照我说的做,使用 onclicklistener。
标签: android android-intent flags tabactivity activitygroup