【发布时间】:2018-01-16 09:38:14
【问题描述】:
根据我的要求,我正在使用不带 viewpager 的 Tablayout,并且想要使用多个选项卡。在这里,我的应用程序第一次运行良好或在点击最后几个片段后使其空白,如果我将其最小化以最大化或解锁设备或关闭应用程序并重新启动是选项,我可以看到返回的视图。提前致谢。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="@drawable/header"
android:minHeight="?attr/actionBarSize"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
</android.support.v7.widget.Toolbar>
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:visibility="gone"
app:tabIndicatorColor="@android:color/white"
app:tabMode="scrollable"
app:tabGravity="fill" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/header"
android:orientation="vertical">
<include layout="@layout/content_main" />
</LinearLayout>
和我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
overridePendingTransition(R.anim.trans_left_in, R.anim.trans_left_out);
setContentView(R.layout.app_bar_main);
activityComponent().inject(this);
instance = this;
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
toolbar.setTitle("" + EPreference.getInstance().getStringValue(EPreference.EVENTNAME));
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setIcon(R.mipmap.ic_launcher);
tabViewGroup = (ViewGroup) findViewById(R.id.content_main);
tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.setVisibility(View.VISIBLE);
mMainPresenter.attachView(this);
if (!EApplication.get().isLaoggedin) {
progressDialog = new ProgressDialog(MainActivity.this);
progressDialog.setCancelable(false);
progressDialog.setMessage("Loading...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setProgress(0);
progressDialog.show();
mMainPresenter.syncAllDataAtOnce();
}
bindWidgetsWithAnEvent();
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
try {
if (tabLayout.getTabCount() > 0)
tabLayout.removeAllTabs();
} catch (Exception e) {
e.printStackTrace();
}
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_1)), true);
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_3)));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_2)));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_4)));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_5)));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_6)));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_7)));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_9)));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_8)));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_10)));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_11)));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_12)));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_13)));
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.demo_tab_14)));
} catch (Exception e) {
e.printStackTrace();
}
}
private void bindWidgetsWithAnEvent() {
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
setCurrentTabFragment(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
private void setCurrentTabFragment(int tabPosition) {
String type = "";
String sender_id = "";
String wallStr = "false", guestStr = "false", chatStr = "false", OneToOne = "true";
try {
Bundle extras = getIntent().getExtras();
if (extras != null) {
type = extras.getString("type");
if (type.equalsIgnoreCase("Wall")) {
wallStr = "true";
} else if (type.equalsIgnoreCase("Guest")) {
guestStr = "true";
} else if (type.equalsIgnoreCase("Chat")) {
sender_id = extras.getString("other");
OneToOne = extras.getString("OneToOne");
chatStr = sender_id;
}
}
} catch (Exception e) {
e.printStackTrace();
}
Bundle bundle = new Bundle();
switch (tabPosition) {
case 0:
WallFragment wallFragment = WallFragment.newInstance();
bundle.putString("page_source", wallStr);
wallFragment.setArguments(bundle);
replaceFragment(wallFragment);
break;
case 1:
EventFragment eventFragment = EventFragment.newInstance();
replaceFragment(eventFragment);
break;
case 2:
GuestFragment guestFragment = GuestFragment.newInstance();
bundle.putString("page_source", guestStr);
guestFragment.setArguments(bundle);
replaceFragment(guestFragment);
break;
case 3:
GallleryGridFragment gallleryGridFragment = GallleryGridFragment.newInstance();
replaceFragment(gallleryGridFragment);
break;
case 4:
ChatFragment chatFragment = ChatFragment.newInstance();
bundle.putString("page_source", chatStr);
bundle.putString("OneToOne", OneToOne);
chatFragment.setArguments(bundle);
replaceFragment(chatFragment);
break;
case 5:
GiftFragment giftFragment = GiftFragment.newInstance();
replaceFragment(giftFragment);
break;
case 6:
FeedbackFragment feedbackFragment = FeedbackFragment.newInstance();
replaceFragment(feedbackFragment);
break;
case 7:
ExpenseFragment expenseFragment = ExpenseFragment.newInstance();
replaceFragment(expenseFragment);
break;
case 8:
HotelRoomFragment hotelRoomFragment = HotelRoomFragment.newInstance();
replaceFragment(hotelRoomFragment);
break;
case 9:
replaceFragment(VendorFragment.newInstance());
break;
case 10:
replaceFragment(ParticularFragment.newInstance());
break;
case 11:
replaceFragment(ProfileFragment.newInstance());
break;
case 12:
replaceFragment(BroadcastFragment.newInstance());
break;
case 13:
replaceFragment(NearByFragment.newInstance());
break;
}
}
public void replaceFragment(Fragment fragment) {
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.content_main, fragment);
ft.addToBackStack(null);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.commit();
}
【问题讨论】:
标签: android android-fragments tabs android-tablayout