你好吗马克?我对您在“CommonsWare The Busy Coders Guide to Android Development”一书中编写的程序有疑问。
我在第 28 章第 377 页上谈论 Fragments/EU4You_6。我想通过添加ActionBar Tab来扩展它。
没有对你原来的程序做任何改动,我所做的就是把EU4You.java复制到EU5You.java,代表Tab2。EU4You.java 将是默认的 Tab1。
以下是我的方法:
我创建了一个名为EU4Main.java的 java 程序,它代表 MAIN 程序而不是原始的 EU4You。当然,我将清单更改为 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
}
}