android - 如何在具有不同输入的 TabActivity 中对 3 个不同的选项卡使用相同的 Activity

标签 android tabwidget tabactivity

我有一个 TabActivity,它有 3 个标签,所有 3 个标签重用相同的 Activity

我通过 extras(intent.putextras()) 来区分,我将显示每个选项卡的内容

现在的问题是,当我们相互切换选项卡时,我通过 Intent 传递的额外值对于第二个选项卡来说是错误的。

据我了解,当我们创建 FirstTab 时,会创建唯一的 Activity,因此会根据它绘制内容。

当我们添加 secondTab 时, Intent 存储额外的值

当我们创建第三个选项卡时,Intent 再次覆盖了额外的值。

所以当我们切换到第二个标签时,我收到了第三个标签的额外值,因此向用户显示了错误的内容。

这是代码,

public class ContentsTab extends TabActivity implements OnTabChangeListener{

public static final String _ID = "_id";
public static final int ID_1 = 1;
public static final int ID_2 = 2;
public static final int ID_3 = 4;

private TabHost mTabHost;
private static Intent newIntent;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);     

newIntent = new Intent(this, ShowContents.class);

mTabHost = getTabHost();

    newIntent.putExtra(_ID, ID_1);
mTabHost.addTab(mTabHost.newTabSpec(INT_EXT_MEM)
            .setContent(newIntent)
            .setIndicator("one"));

    newIntent.putExtra(_ID, ID_2);
    mTabHost.addTab(mTabHost.newTabSpec(EXT_MEM)                
            .setIndicator("two")
            .setContent(newIntent));

    newIntent.putExtra(_ID, ID_3);
    mTabHost.addTab(mTabHost.newTabSpec(INT_MEM)
            .setContent(newIntent)
            .setIndicator("three"));

    mTabHost.setCurrentTabByTag("one");

    mTabHost.setOnTabChangedListener(this);
}

@Override
public void onTabChanged(String tabId) {
    //This is only coming once the Tab is changed
    Log.d(TAG, "onTabChanged arg0 = "+tabId);               
 }
 }

显示内容.class

public class ShowContents extends ListActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {        
    super.onCreate(savedInstanceState);     

    Bundle extras = getIntent().getExtras();

    int mId_ContentType;

    mId_ContentType = extras != null? extras.getInt(_ID): -1;

    updateData(mId_ContentType);

  }
 }

这里是插图, 当用户按下 tab1 时,ShowContents.class 应该接收 1 作为附加值,与 tab2 和 tab3 相同,但接收到以下值 表 1 - 1 Tab2 - 4(正确的值应该是2) 表 3 - 4

Tab1 和 Tab3 值即将正确。

有没有其他方法可以将正确的额外参数发送到 Tab2?使用相同的类 Activity?

请帮帮我

感谢您的宝贵时间:)

最佳答案

您需要有 3 个不同的 Activity 实例。你可以这样做

newIntent1 = new Intent(this, ShowContents.class);
newIntent2 = new Intent(this, ShowContents.class);
newIntent3 = new Intent(this, ShowContents.class);

然后将这 3 个实例用于 3 个选项卡。这样应该没问题。

关于android - 如何在具有不同输入的 TabActivity 中对 3 个不同的选项卡使用相同的 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4967523/

相关文章:

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

android - 为什么键盘出现在 TabBar 之后?

Android:从 Activity 外部调整小部件的参数

android - auto 和 preferExternal 安装位置 Android list 之间的区别

java - Google Play 商店接受自签名证书应用吗?

android - 我们如何将 Canvas 上的绘图与 Android 中的预定义图像进行比较?

java - 当互联网关闭和恢复时,如何使 android 中的发射器监听器工作?

Android,如何始终将第一个选项卡设置为默认选项卡

android - 将 TabHost 控件添加到 Linearlayout/在 tabhost 选项卡下添加布局

android - android 中的 tabHost 给出 Unfortunately,app has stopped 错误