我有一个TabActivity
其中有 3 个选项卡对所有 3 个选项卡重复使用相同Activity
的选项卡。
我通过 extras( intent.putextras()
) 进行区分,我将显示每个选项卡的内容
现在的问题是,当我们相互切换选项卡时,我通过 Intent 传递的额外值对于第二个选项卡来说是错误的。
据我了解,当我们创建 FirstTab 时,创建了唯一的 Activity,因此内容是根据它绘制的。
当我们添加 secondTab 时,意图存储额外的值
当我们再次创建第三个选项卡时,意图覆盖了额外的值。
所以当我们切换到第二个选项卡时,我会收到第三个选项卡的额外值,因此向用户显示错误的内容。
这是代码,
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 作为 extras,与 tab2 和 tab3 相同,但是收到以下值 Tab1 - 1 Tab2 - 4(正确的值应该是 2) Tab3 - 4
Tab1 和 Tab3 值是正确的。
有没有其他方法可以将正确的额外参数发送到 Tab2?使用相同的类Activity
?
请帮我
谢谢你的时间 :)