我現在使用3個選項卡,並且我可以很好地交換它們。但是,可以說我在第一個選項卡中進行了一些更改(將內容輸入到文本視圖中),然後轉到第三個選項卡,然後再回來,這些更改消失。這似乎很安靜,因爲在我的代碼中,我基於我的xml佈局文件設置TabFragment的選項卡布局。當我們滑動到不同的標籤頁時,有沒有辦法保存標籤的佈局,以便以後可以切換回此保存的標籤佈局?Android Swipe Tab Action Bar - 在選項卡中進行更改持久
(我觀察到一個有趣的事情是改變堅持不懈,當我第2個標籤之間切換,但每當我去第三個,回來的第一,它們就會消失)
我的主活動文件(我的代碼this answer)
public class Tob extends FragmentActivity implements ActionBar.TabListener
{
CollectionPagerAdapter mCollectionPagerAdapter;
ViewPager mViewPager;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCollectionPagerAdapter = new CollectionPagerAdapter(getSupportFragmentManager());
final ActionBar actionBar = getActionBar();
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mCollectionPagerAdapter);
mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener()
{
@Override
public void onPageSelected(int position)
{
actionBar.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < mCollectionPagerAdapter.getCount(); i++)
{
actionBar.addTab(actionBar.newTab()
.setText(mCollectionPagerAdapter.getPageTitle(i))
.setTabListener(this));
}
}
public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction)
{
}
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction)
{
mViewPager.setCurrentItem(tab.getPosition());
}
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction)
{
}
public class CollectionPagerAdapter extends FragmentPagerAdapter
{
final int NUM_ITEMS = 3; // number of tabs
public CollectionPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int i)
{
Fragment fragment = new TabFragment();
Bundle args = new Bundle();
args.putInt(TabFragment.ARG_OBJECT, i);
fragment.setArguments(args);
return fragment;
}
@Override
public int getCount()
{
return NUM_ITEMS;
}
@Override
public CharSequence getPageTitle(int position)
{
String tabLabel = null;
switch (position) {
case 0:
tabLabel = "Tab1";
break;
case 1:
tabLabel = "Tab2";
break;
case 2:
tabLabel = "Tab3";
break;
}
return tabLabel;
}
}
public static class TabFragment extends Fragment
{
public static final String ARG_OBJECT = "object";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
Bundle args = getArguments();
int position = args.getInt(ARG_OBJECT);
int tabLayout = 0;
switch (position)
{
case 0:
tabLayout = R.layout.tob1;
break;
case 1:
tabLayout = R.layout.tob2;
break;
case 2:
tabLayout = R.layout.tob3;
break;
}
View rootView = inflater.inflate(tabLayout, container, false);
return rootView;
}
}
我activity_main.xml中的文件:
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Tob"/>
tob1.xml文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tab1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/apppattern"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
等等。我的直覺是,當切換時我需要保存一個選項卡的佈局,我只是不知道該在哪裏做。
好吧,這似乎是一個足夠好的解決方法。任何方式我可以保存整個標籤?基本上,因爲我也在改變各種按鈕的狀態(啓用/禁用),並且處理這麼多對象將是一個真正的痛苦。 – Karan
啊..整個佈局與數據?...我不知道該怎麼做.. –
好的謝謝,我剛剛意識到,因爲我正在處理這些對象,應該沒有問題在使用這些在這些功能。 – Karan