我正在尝试制作一个在屏幕底部有 4 个选项卡的应用程序。
它们都包含活动(Intent)。
我想将任何活动导航到另一个活动。但要保持 TabWidget 可见。
如果您知道,请尽快告诉我。
谢弗
我正在尝试制作一个在屏幕底部有 4 个选项卡的应用程序。
它们都包含活动(Intent)。
我想将任何活动导航到另一个活动。但要保持 TabWidget 可见。
如果您知道,请尽快告诉我。
谢弗
更换activity出现错误的问题可以通过以下方式解决。
首先让我们了解流程:
我们在 Tab host 中有一个活动(比如一个列表),我们需要从中转到同一选项卡下的下一个活动(比如单击项目的详细信息)。为此,我们可以使用替换活动的概念。还为选定的选项卡设置标志,以及其他了解正在显示的详细信息
当我们按下返回时,我们应该在同一个选项卡下获得上一个活动。为此,我们可以在使用所选选项卡的特定标志时刷新选项卡,而不是再次替换活动。此外,如果显示详细信息的标志为真,我们将进入同一选项卡中的列表,否则我们将进入 tabwidget 之前的活动(正常使用 onBackPressed)
代码可以如下..
(这可以在 onClickListener 中)
private OnClickListener textListener = new OnClickListener() {
@Override
public void onClick(View v) {
Constants.SHOW_DETAILS = true;
Intent intent = new Intent(context, DetailsActivity.class);
replaceContentView("activity3", intent);
}
};
public void replaceContentView(String id, Intent newIntent) {
View view = ((ActivityGroup) context)
.getLocalActivityManager()
.startActivity(id,
newIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
((Activity) context).setContentView(view);
}
完成后按后,我们在选项卡下的每个 Activity 中覆盖 BackPressed,以从详细信息屏幕再次转到列表
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
if (MathHelper.SHOW_DETAILS) {
Log.e("back", "pressed accepted");
Constants.LIST_ACTIVITY = 1;
Constants.SHOW_DETAILS = false;
Intent intent = new Intent(this, Tab_widget.class);
startActivity(intent);
finish();
}
}
这里最重要的部分是 Constants.LIST_ACTIVITY = 1; 它指示我们在哪个选项卡中。因此相应的活动将其值为 0,1,2...等
再次在刷新选项卡活动时加载正确的列表(Activty),我们必须在创建选项卡后将其包含在 TabWidget onCreate 中
tabHost.setCurrentTab(Constants.LIST_ACTIVITY);
任何时候都可能只有一项活动。关于这个的文档在这里
这是在选项卡中实现的,在单个选项卡中有多个活动。
但是,当多次调用活动时,会出现 StackOverFlow 错误。非常努力但无法解决..请有人告诉解决这个问题的方法
还需要替换选项卡中的活动,但是来自子活动。那该怎么做?