gpt4 book ai didi

安卓。如何更改选项卡内的 Activity

转载 作者:IT王子 更新时间:2023-10-28 23:31:10 25 4
gpt4 key购买 nike

以下情况:我有 TabActivity 例如三个选项卡,TabA、TabB、TabC。

TabC 的 Activity (Act_C_1)中有一个按钮。因此,如果用户单击该按钮,TabC 中应该会发生另一个 Activity (Act_C_2)。

提前感谢您的任何建议/或想法。

穆尔

UPD:

这是我的代码

具有三个 Activity 的TabActivity:

public class TabScreen extends TabActivity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

setContentView(R.layout.tab_menu);

TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Resusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab

intent = new Intent().setClass(this, SecondActivity.class);

// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("tab_1").setIndicator("Tab1",null).setContent(intent);
tabHost.addTab(spec);

intent = new Intent().setClass(this, ThirdActivity.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("tab_2").setIndicator("Tab2",null).setContent(intent);
tabHost.addTab(spec);

intent = new Intent().setClass(this, FourthActivity.class);
spec = tabHost.newTabSpec("tab_3").setIndicator("Tab3",null).setContent(intent);
tabHost.addTab(spec);
}

}

Activity “Act_C_1”或FourthActivity.java:

public class FourthActivity extends Activity implements OnClickListener
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.fourth);

Button BtnWeiter = (Button)findViewById(R.id.BtnWeiter);
BtnWeiter.setOnClickListener(this);
}

@Override
public void onClick(View v)
{
// I also tried to use LocalActivityManager
// TabActivity parentTabActivity = (TabActivity) getParent();
// LocalActivityManager manager = parentTabActivity.getLocalActivityManager();
// manager.destroyActivity("tab_3", true);
// manager.startActivity("tab_3", new Intent(this, FourthActivity.class));
finish();
startActivity(new Intent(this, FourthActivity.class));
}
}

最佳答案

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

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

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

  2. 当我们按下返回时,我们应该在同一个选项卡下获得上一个 Activity 。为此,我们可以在使用已选择选项卡的特定标志时刷新选项卡,而不是再次替换 Activity 。此外,如果显示详细信息的标志为真,我们将进入同一选项卡中的列表,否则我们将进入 tabwidget 之前的 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...等

再次在标签 Activity 刷新时加载正确的列表(Activty),我们必须在创建标签后将其包含在 TabWidget onCreate 中

tabHost.setCurrentTab(Constants.LIST_ACTIVITY);

关于安卓。如何更改选项卡内的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3871681/

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