Как ты, Марк? У меня есть вопрос, касающийся программы, которую вы написали в книге "CommonsWare. Руководство для занятых программистов по разработке Android".
Я говорю о фрагментах / EU4You_6 на Главе 28, стр. 377. Я хочу расширить это, добавив ActionBar Tab .
Не внося никаких изменений в исходную программу, я скопировал EU4You.java в EU5You.java, который представляет Tab2. EU4You.java будет по умолчанию Tab1.
Вот мой подход:
Я создал java-программу под названием EU4Main.java , которая представляет собой ОСНОВНУЮ программу вместо оригинальной EU4You. Конечно, я изменил манифест на Android: name = " .EU4Main "
EU4Main.java - это место, куда я вкладываю вкладку ActionBar. Беда в том, что я расстроен в настройке TabListener. У меня есть эта установка .setTabListener (новый TabListener (EU4You.class))); , который передает класс. Это не работает. Есть ли у вас какие-либо советы по этому поводу вместо прохождения класса?
Кроме того, onTabSelected в приведенных ниже фрагментах кода не работает должным образом. Если я нажму Tab2, он покажет список для Tab2, но автоматически вернется к Tab1. Это не останется на Tab2. Я не знаю почему?
Буду признателен за любую помощь, если вы сможете обеспечить лучший и рабочий подход для .setTabListener и onTabSelected
Я также расширил FragmentActivity до EU4Main или я должен просто использовать вместо Расширения Activity?
Заранее спасибо.
Я включил EU4Main ниже с неправильными и неполными кодами (я просто не могу заставить его работать ...)
public class EU4Main extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
bar.addTab(bar
.newTab()
.setText("Countries")
.setTabListener(new TabListener(EU4You.class)));
bar.addTab(bar
.newTab()
.setText("Artists")
.setTabListener(new TabListener(EU5You.class)));
.
.
.
private class TabListener implements ActionBar.TabListener {
public TabListener(Activity activity) {
mActivity = activity;
}
public void onTabSelected(ActionBar.Tab tab, android.app.FragmentTransaction unused) {
if (tab.getPosition() == 0) {
Intent intent = new Intent();
String packageName = "com.commonsware.android.eu4you";
String className = "com.commonsware.android.eu4you.EU4You";
intent.setClassName(packageName, className);
startActivity(intent);
else{
Intent intent = new Intent();
String packageName = "com.commonsware.android.eu4you";
String className = "com.commonsware.android.eu4you.EU5You";
intent.setClassName(packageName, className);
startActivity(intent);
}
}
public void onTabUnselected(ActionBar.Tab tab, android.app.FragmentTransaction unused) {
FragmentManager fragMgr = getSupportFragmentManager();
FragmentTransaction xaction=fragMgr.beginTransaction();
}
public void onTabReselected(ActionBar.Tab tab,
android.app.FragmentTransaction xaction) {
// NO-OP
}
}