マークはどうですか?「CommonsWare The Busy Coders Guide to Android Development」という本であなたが書いたプログラムについて質問があります。
私は Fragments/EU4You_6 について 28 章の 377 ページで話しています。ActionBar Tabを追加してこれを拡張したいと思います。
元のプログラムを変更せずに、私は EU4You.java を Tab2 を表す EU5You.java にコピーしました。EU4You.java がデフォルトの Tab1 になります。
以下は私のアプローチです:
元の EU4You の代わりに MAIN プログラムを表すEU4Main.javaという Java プログラムを作成しました。もちろん、マニフェストを android:name=" .EU4Main "に変更しました
EU4Main.java は、ActionBar タブを配置した場所です。問題は、TabListener のセットアップにあることです。このセットアップがあります.setTabListener(new TabListener(EU4You.class))); 、クラスを渡します。それは動かなかった。クラスに合格する代わりに、これについて何かアドバイスはありますか?
また、以下のコード スニペットのonTabSelectedが正しく機能しませんでした。Tab2 をクリックすると、Tab2 のリストが表示されますが、自動的に Tab1 に戻ります。Tab2 にとどまりません。どうしてか分かりません?
.setTabListenerとonTabSelectedの両方により優れた実用的なアプローチを提供できれば、どんな助けにも感謝します
FragmentActivityもEU4Mainに拡張しましたか、代わりに extends 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
}
}