문제

내가 사용하는 탭 3 개,바로 지금 나는 그들 사이에 교환 그리고 좋은 것입니다.그러나,고 말할 수 있습니다 내가 일부 변경 첫 번째 탭에서(입력으로 무언가 텍스트 뷰),다음의 탭을 나와 다음 다시,변경 내용이 사라집니다.이것은 조용한 분명하기 때문에,나의 코드가 나는 설정 탭의 레이아웃 TabFragment 에 따라 내 xml 레이아웃 파일이 있습니다.하는 방법이 있습 저장 탭의 레이아웃을 때 우리에 와이프 다른 탭할 수 있도록 스위치 다시 이 탭의 레이아웃을 나중에?

(재미있는 일이 관찰되는 변경 사항을 적용합니다 지속가 사이에는 2 개의 탭이지만,이는 세 번째 중 하나에 돌아와의 첫째,그들은 사라지)

나의 주요 활동은 파일(가 코드 이 답변)

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" >

그래서.내 예감은 내가 해야의 레이아웃을 저장할 때 탭 전환,나는 확실하지 않습니다.

도움이 되었습니까?

해결책

크로스시: 데이터 저장에 대 탭

당신이 사용할 수 있는 공유 기본 설정을 저장하고 검색하는 사용자 입력/문자열/숫자 등에서는 탭입니다.

첫째,선언 SharedPreference 이름표에서 당신의 클래스입니다.

public static final String PREFS_NAME = "Blah";

에서는,다음의 onTabUnselected 방법,저장의 모든 양식과 관련된 텍스트 데이터로 SharedPreference.

public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) 
{
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
     SharedPreferences.Editor editor = settings.edit();
     editor.putString("userText", (TextView)getViewById(R.id.myTextView).getText());
     editor.commit();
}

마지막으로 검색하 SharedPreference 텍스트에서 onTabSelected 방법입니다.

public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) 
{
     SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
     String myText = settings.getString("userText", "Default");
     ((TextView)getViewById(R.id.myTextView)).setText(myText);
}

여기에는 원래 안드로이드 doc 페이지 http://developer.android.com/guide/topics/data/data-storage.html 저장할 수 있습니다 기본 형식 문자열,수레,부울 등을 사용하여 후 sharedpreferences.저장할 수도 있습 url 문자열은 다른 자원을 위해 같은 레이아웃/이미지를 검색하는 그들 및 동적으로 만들의 견해에 tab1.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top