5

我正在尝试制作一个在屏幕底部有 4 个选项卡的应用程序。

它们都包含活动(Intent)。

我想将任何活动导航到另一个活动。但要保持 TabWidget 可见。

如果您知道,请尽快告诉我。


谢弗

4

3 回答 3

3

更换activity出现错误的问题可以通过以下方式解决。

首先让我们了解流程:

  1. 我们在 Tab host 中有一个活动(比如一个列表),我们需要从中转到同一选项卡下的下一个活动(比如单击项目的详细信息)。为此,我们可以使用替换活动的概念。还为选定的选项卡设置标志,以及其他了解正在显示的详细信息

  2. 当我们按下返回时,我们应该在同一个选项卡下获得上一个活动。为此,我们可以在使用所选选项卡的特定标志时刷新选项卡,而不是再次替换活动。此外,如果显示详细信息的标志为真,我们将进入同一选项卡中的列表,否则我们将进入 tabwidget 之前的活动(正常使用 onBackPressed)

代码可以如下..

  1. 从列表到详细信息...

(这可以在 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);

}
  1. 完成后按后,我们在选项卡下的每个 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);
于 2011-07-26T05:54:42.990 回答
1

任何时候都可能只有一项活动。关于这个的文档在这里

于 2011-07-20T19:17:57.700 回答
1

这是在选项卡中实现的,在单个选项卡中有多个活动

但是,当多次调用活动时,会出现 StackOverFlow 错误。非常努力但无法解决..请有人告诉解决这个问题的方法

还需要替换选项卡中的活动,但是来自子活动。那该怎么做?

于 2011-04-15T11:38:33.473 回答