如何在TabActivity中使用不同输入的3个不同选项卡使用相同的Activity

时间:2011-02-11 09:42:05

标签: android tabwidget tabactivity

我有一个TabActivity,其中有3个标签为所有3个标签重复使用相同的Activity

我通过额外的(intent.putextras())进行区分,我将显示每个标签的内容

现在的问题是,当我们将标签彼此切换时,我通过Intent传递的额外值会出现在第二个标签中。

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

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

并且当我们创建第三个标签时,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);               
 }
 }

showcontents.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相同,但会收到以下值 Tab1 - 1 Tab2 - 4(正确值应为2) Tab3 - 4

Tab1和Tab3值正确无误。

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

请帮帮我

感谢您的时间:)

1 个答案:

答案 0 :(得分:0)

您需要有3个不同的活动实例。你可以做这样的事情

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

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