我有一個帶有選項卡的菜單(ViewPager
)的應用程序,我試圖給它添加一個啓動畫面。片段初始屏幕沒有顯示在主要活動
的選項卡,因爲他們應該工作,但我似乎無法使SplashFragment
運行顯示選項卡之前(直到用戶進行身份驗證,但是這是一個不同的故事)
我的問題是是什麼下面的代碼可能導致片段不顯示錯誤?
一些信息: 只有1 FragmentActivity
(MainActivity.java/activity_main.xml),其中有一個ViewPager
。
這是我的activity_main.xml
佈局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:padding="4dip"
android:gravity="center_horizontal"
android:layout_width="match_parent" android:layout_height="match_parent"
>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/pager">
</android.support.v4.view.ViewPager>
<FrameLayout
android:id="@+id/frag_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
這裏是我的MainActivity
的onCreate()
功能:
protected void onCreate(Bundle savedInstanceState) {
final ActionBar actionBar = getActionBar();
super.onCreate(savedInstanceState);
//uiHelper = new UiLifecycleHelper(this, callback);
//uiHelper.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
/***********************************/
/****** SETTING FRAGMENT HERE ******/
/***********************************/
FragmentManager fragMgr = getSupportFragmentManager();
FragmentTransaction xact = fragMgr.beginTransaction();
if (null == fragMgr.findFragmentByTag("splashScreen")) {
xact.add(R.id.frag_container, new SplashFragment(), "splashScreen").commit();
}
List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this,SelectionFragment.class.getName()));
fragments.add(Fragment.instantiate(this,SplashFragment.class.getName()));
fragments.add(Fragment.instantiate(this,SelectionFragment.class.getName()));
mAdapter = new fragAdapter(getSupportFragmentManager(), fragments);
mPager = (ViewPager)findViewById(R.id.pager);
mPager.setOnPageChangeListener(
new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
getActionBar().setSelectedNavigationItem(position);
}
});
mPager.setAdapter(mAdapter);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.TabListener tabListener = new ActionBar.TabListener() {
@Override
public void onTabUnselected(Tab tab, android.app.FragmentTransaction ft) {
// TODO Auto-generated method stub
}
@Override
public void onTabSelected(Tab tab, android.app.FragmentTransaction ft) {
// TODO Auto-generated method stub
mPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabReselected(Tab tab, android.app.FragmentTransaction ft) {
// TODO Auto-generated method stub
}
};
for(int i = 0; i < fragments.size(); i++) {
actionBar.addTab(actionBar.newTab().setText("Tab " + (i+1)).setTabListener(tabListener));
}
mPager.setCurrentItem(1);
}
爲什麼不只是爲你的飛濺屏幕另有活動? http://blog.blundell-apps.com/tut-splashscreen-with-progress-bar/ – Blundell
謝謝。但是我仍然需要最終加載其他東西......或者我應該只使用活動?我是新來的,我不知道什麼時候使用片段或活動是很好的,所以......我可以創建另一個「片段啓動器」活動,並在每次需要加載不在'ViewPager'。雖然這是好的做法嗎? – Asaf
你希望你的活動做一件事。所以是的,一個AppStartActivity會很好。 – Blundell