其他分享
首页 > 其他分享> > android – 在TabActivity的FrameLayout中启动另一个Activity

android – 在TabActivity的FrameLayout中启动另一个Activity

作者:互联网

我正在尝试制作一个在屏幕底部有4个标签的应用程序.

所有这些都包含Activity(Intent).

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

如果您了解它,请尽快通知我.

Shaiful

解决方法:

由于更换活动而发生错误的问题可以通过以下方式解决.

首先让我们了解一下流程:

>我们在Tab主机中有活动(比如一个列表),我们需要在同一个标​​签下转到下一个Activity(说明被点击项目的详细信息).为此,我们可以使用替换活动的概念.还可以设置所选选项卡的标志以及其他用于了解现在正在显示详细信息的标记
>当我们按下时,我们应该在相同的选项卡下获取上一个活动.为此,我们可以在使用选中的选项卡的特定标志时刷新选项卡而不是再次替换活动.此外,如果显示详细信息的标志为true,我们将在同一个选项卡中列出该列表,否则我们将在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);

标签:android,android-activity,tabactivity
来源: https://codeday.me/bug/20190521/1149208.html