gpt4 book ai didi

android - TabHost 中的另一个 Activity ?

转载 作者:行者123 更新时间:2023-11-29 00:45:24 26 4
gpt4 key购买 nike

我制作了一个标签宿主并在其中显示了 4 个标签,如下代码所示

    /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.main);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

TabHost tabHost = getTabHost();

tabHost.addTab(tabHost.newTabSpec("list").setIndicator("List").setContent(
new Intent(this, List.class)));
tabHost.addTab(tabHost.newTabSpec("profile").setIndicator("Profile").setContent(
new Intent(this, Profile.class)));
tabHost.addTab(tabHost.newTabSpec("criteria").setIndicator("Criteria").setContent(
new Intent(this, Criteria.class)));
tabHost.addTab(tabHost.newTabSpec("more").setIndicator("More").setContent(
new Intent(this, More.class)));
}
}

在个人资料中,我有一个按钮可以编辑用户的个人资料,当我点击该按钮时,它会调用如下方法

    @Override
public void onClick(View v) {
System.out.println("Veer");
Intent intent = new Intent().setClass(this, EditProfile.class);
Intent intent = new Intent(this, EditProfile.class);
}

哪里显示了 EditProfile,但选项卡不可见,因为在 iPhone 中它一直可见,现在我应该怎么做才能让我的选项卡位于上方而 EditProfile 位于配置文件选项卡内?

最佳答案

选项卡中的Activity可以通过以下方式切换。

首先让我们了解流程:

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

  2. 当我们按下返回键时,我们应该在同一选项卡下获得之前的 Activity 。为此,我们可以刷新选项卡,同时使用所选选项卡的特定标志,而不是再次替换 Activity 。此外,如果显示详细信息的标志为真,我们将转到同一选项卡中的列表,否则我们将转到选项卡小部件之前的 Activity (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();
    }
    }

这里最重要的部分是常数.LIST_ACTIVITY = 1;它指示我们在哪个选项卡中。因此相应的 Activity 将具有其值 0,1,2...等等

再次加载正确的列表(Activty),当Tab Actives刷新时,我们必须将其包含在TabWidget之后,创建Tabs

之后
tabHost.setCurrentTab(Constants.LIST_ACTIVITY);

关于android - TabHost 中的另一个 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6676988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com