2012-05-06 3 views
-2

У меня есть просмотрщик работает хорошо, когда я нажимаю на просмотр/страницу, он открывает новое действие, но когда я хочу нажать, чтобы перейти к viewpager, приложение закрывается. Как я могу заставить viewpager нормально открываться на текущей странице, когда я нажимаю кнопку «Назад»?Нажатие кнопки возврата на просмотрщик

Я знаю, что, как предполагается, так вот код ViewPager:

public class LogoQuizActivity extends Activity { 

private 
class PageListener extends SimpleOnPageChangeListener{ 
public void onPageSelected(int position) { 
    //Log.i(TAG, "page selected " + position); 
     currentPage = position; 
} 
}  

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    MyPagerAdapter adapter = new MyPagerAdapter(); 
    ViewPager myPager = (ViewPager) findViewById(R.id.myfivepanelpager); 
    myPager.setAdapter(adapter); 
    myPager.setCurrentItem(currentPage); 
    myPager.setPadding(0, 150, 0, 0); 

    PageListener pageListener = new PageListener(); 
    myPager.setOnPageChangeListener(pageListener); 

} 

private class MyPagerAdapter extends PagerAdapter { 

    public int getCount() { 
     return 5; 
    } 

    public Object instantiateItem(View collection, int position) { 

     LayoutInflater inflater = (LayoutInflater) collection.getContext() 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View view = null; // this comes first 
     int resId = 0; 
     switch (position) { 
     case 0: 
      resId = R.layout.farleft; 
      view = inflater.inflate(resId, null); 

      break; 
     case 1: 
      resId = R.layout.left; 
      view = inflater.inflate(resId, null); 

      break; 
     case 2: 
      resId = R.layout.middle; 
      view = inflater.inflate(resId, null); 

      break; 
     case 3: 
      resId = R.layout.right; 
      view = inflater.inflate(resId, null); 

      break; 
     case 4: 
      resId = R.layout.farright; 
      view = inflater.inflate(resId, null); 

      break; 
     } 


     view.setTag(position); 
     view.setOnClickListener(new OnClickListener() { 
      public void onClick(View view) { 

       int position = (Integer) view.getTag(); 
       Log.v("Log_tag", "Here image is clicked" + position); 

       if(position == 0){ 
        Intent intent = new Intent(LogoQuizActivity.this, 
          LevelOne.class); 
        startActivity(intent); 

       } 

       if(position == 1){ 
        Intent intent = new Intent(getBaseContext(), 
          LevelTwo.class); 
        startActivity(intent); 
       } 

       if(position == 2){ 
        Intent intent = new Intent(getBaseContext(), 
          LevelThree.class); 
        startActivity(intent); 
       } 

       if(position == 3){ 
        Intent intent = new Intent(getBaseContext(), 
          LevelFour.class); 
        startActivity(intent); 
       } 

       if(position == 4){ 
        Intent intent = new Intent(getBaseContext(), 
          LevelFive.class); 
        startActivity(intent); 
       } 
      } 
     }); 


     ((ViewPager) collection).addView(view, 0); 

     return view; 


    } 



    @Override 
    public void destroyItem(View arg0, int arg1, Object arg2) { 
     ((ViewPager) arg0).removeView((View) arg2); 

    } 

    @Override 
    public void finishUpdate(View arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public boolean isViewFromObject(View arg0, Object arg1) { 
     return arg0 == ((View) arg1); 

    } 

    @Override 
    public void restoreState(Parcelable arg0, ClassLoader arg1) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public Parcelable saveState() { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void startUpdate(View arg0) { 
     // TODO Auto-generated method stub 

    }  

} 

} 

Я не уверен, если это делать с восстановлением состояния метода или вернуть нуль в parcelable savestate. Это может быть совершенно очевидно, поэтому заблаговременно!

+1

Если вы выбрасываете «Исключение», то вам нужно указать, какой тип и разместить свой ** журнал **. Кроме того, это не похоже на то, что вы правильно используете «ViewPager», но с другой стороны вы еще никому не помогли. Вы должны попытаться задать более конкретный вопрос и предпочтительно включить любой соответствующий код. – adneal

+0

.. это не исключение. Я просто прошу о помощи и советах. Вопрос не является расплывчатым и относится к повторному открытию viewpager после того, как его мнение было уничтожено. Постарайтесь быть более конструктивными – Pete

+0

@Pete он прав. Если ваш просмотрщик находится в своем собственном действии, и вы запускаете новое действие, щелкнув его, вы должны вернуться к активности viewpager, нажав кнопку «Назад». Нам нужно пропустить какую-то информацию ... – Warpzit

ответ

0

Решил это, используя FLAG_ACTIVITY_CLEAR_TOP по моему второму и третьему действиям после того, как я назвал новое намерение.

Смежные вопросы