У меня есть TabActivity
, в котором есть 3 вкладки, повторно использующие одинаковые Activity
для всех 3 вкладок.
Я различаюсь с помощью дополнительных функций (intent.putextras()
), которые я должен отображать содержимоекаждая вкладка
Теперь проблема в том, что когда мы переключаем вкладку друг от друга, дополнительные значения, которые я пропустил через Намерение, не подходят для второй вкладки.
Как я понял, когда мы создали FirstTab, создается единственное действие, и поэтому содержимое рисуется в соответствии с ним.
, когда мы добавляем secondTab намерение, хранящее дополнительное значение
, и снова, когда мы создаем третью вкладку, Intent over- записываем дополнительное значение.
, поэтому, когда бы мы ни переключались на 2-ю вкладку, я получаю дополнительное значение 3-й вкладки и, следовательно, показываю неправильное содержимое пользователю.
вот код,
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
?
Пожалуйста, помогите мне
Спасибо за ваше время:)