2016-10-28 3 views
1

Привет я работаю в приложение, в котором:Фрагмент показывает, но не привязывается к деятельности

  1. View пейджера там деятельности.
  2. В этом представлении пейджер я показываю 2 фрагмента (frag1 и frag2).
  3. Нажатие кнопки на frag1 мы добавили еще один фрагмент (скажем, frag3).
  4. и на спине нажмите на frag3 я вернусь на frag1.

Издание:

вопрос, когда я вернусь к frag1 из frag3 на спине прессе, иногда frag1 не привязан к деятельности.

Я не могу понять, как это происходит.

Если это происходит, то что такое решение, поэтому я могу остановить активность, чтобы отделить frag1 или повторно инициализировать frag1 снова.

Пожалуйста, помогите.

+1

попробовать добавить свои фрагменты backstack, когда и хотите сохранить фрагмент состояния – Ak9637

+1

Используйте addToBackStack при создании для frag1 – Shane

+0

но frag1 является на viewpager, я должен добавить это тоже? @Shane – Sangeeta

ответ

1

Следуйте за этим tutorial. Это поможет вам настроить Viewpager

1

Этот код может помочь вам

public class PageAdapter extends FragmentPagerAdapter implements IconPagerAdapter { 
    protected static final int[] PAGER = new int[] { 
      R.drawable.image1, 
      R.drawable.image2, 
      R.drawable.image3, 
      R.drawable.image4 
    }; 

    private int mCount = PAGER.length; 

    public PagerFragmentAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return new PagerFragment(PAGER[position]); 
    } 

    @Override 
    public int getIconResId(int index) { 
     return ICONS[index % PAGER.length]; 
    } 

    @Override 
    public int getCount() { 
     return mCount; 
    } 

    public void setCount(int count) { 
     if (count > 0 && count <= 10) { 
      mCount = count; 
      notifyDataSetChanged(); 
     } 
    } 
} 

Определение Фрагменты

public final class PagerFragment extends Fragment { 
    private static final String KEY_CONTENT = "PagerFragment:Content"; 
    int imageSource; 

    public PagerFragment(int imageSource) { 
     this.imageSource = imageSource; 

    } 

    public PagerFragment() { 

    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) { 
      imageSource = savedInstanceState.getInt(KEY_CONTENT); 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     ViewGroup root = (ViewGroup) inflater.inflate(R.layout.indicatorpage, null); 
     ImageView image = (ImageView) root.findViewById(R.id.pagerImage); 
     image.setImageResource(imageSource); 
     setRetainInstance(true); 
     return root; 
    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     super.onSaveInstanceState(outState); 
     outState.putInt(KEY_CONTENT, imageSource); 
    } 
} 

MainActivity Класс

public class MainActivity extends FragmentActivity { 
    PagerFragmentAdapter mAdapter; 
    ViewPager mPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mAdapter = new PagerFragmentAdapter(getSupportFragmentManager()); 
     mPager = (ViewPager) findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 
     mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

      } 

      @Override 
      public void onPageSelected(int position) { 
       System.out.println("selected page is :" + position); 

      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 

     CirclePageIndicator mIndicator = (CirclePageIndicator) findViewById(R.id.indicator); 
     mIndicator.setViewPager(mPager); 

     final float density = getResources().getDisplayMetrics().density; 
     mIndicator.setRadius(7 * density); 
     mIndicator.setPageColor(0x00000000); 
     mIndicator.setFillColor(0xFFFFFFFF); 
     mIndicator.setStrokeColor(0xFFFFFFFF); 
     mIndicator.setStrokeWidth(1 * density); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 
Смежные вопросы