2014-05-14 30 views
0

我正在處理一個viewpager,它有3張圖片,上面我通過getCurrentItem()設置了onClickListener,但是它不能正常工作。我的意思是,如果我打開應用程序,它的工作原理是完美的,但如果我滑動到圖像2,然後回到圖像1,它不再正常工作,如果圖像1是currentItem,則它們顯示第二種情況onClickListener,如果它是2,那麼它顯示第三種情況,所以,我不明白爲什麼。非常感謝 !Android ViewPager getCurrentItem()不起作用

******有兩個位置變量,因爲我嘗試了幾種方法,但沒有一個能正常工作。謝謝 !

MainActivity.java:

@Override 
    public Object instantiateItem(View collection, final int position) { 
      ImageView view = new ImageView(MainActivity.this); 
      view.setImageResource(pics[position]); 
      final int p = pager.getCurrentItem(); 

      final ImageView img3 = (ImageView) findViewById(R.id.imageView3); 
      img3.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 

        WallpaperManager myWallpaperManager = WallpaperManager 
          .getInstance(getApplicationContext()); 

        try { 
         myWallpaperManager.setResource(p); 
         Toast.makeText(getApplicationContext(), 
           "Wallpaper-ul a fost setat cu succes!", 
           Toast.LENGTH_LONG).show(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
       } 

      }); 

      final ImageView img2 = (ImageView) findViewById(R.id.imageView2); 
      img2.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        switch (p) { 
        case 1: 
         Intent m1 = new Intent(MainActivity.this, Maps.class); 
         startActivity(m1); 
         break; 
        case 2: 
         Intent i2 = new Intent(MainActivity.this, Romania.class); 
         startActivity(i2); 
         break; 

        default: 
         break; 
        } 

       } 
      }); 

      final ImageView img = (ImageView) findViewById(R.id.imageView1); 
      img.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        switch (position) { 
        case 1: 
         dialog = new Dialog(MainActivity.this); 
         dialog.setContentView(R.layout.dialog1); 
         dialog.setTitle("Materie:" + p); 


         Button btnSave = (Button) dialog.findViewById(R.id.button1); 

         btnSave.setOnClickListener(new OnClickListener() { 

          @Override 
          public void onClick(View v) { 

           dialog.dismiss(); 

          } 
         }); 
         dialog.show(); 

         break; 
        case 2: 
         Intent i2 = new Intent(MainActivity.this, Romania.class); 
         startActivity(i2); 
         break; 

        default: 
         break; 
        } 

       } 
      }); 

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

      return view; 
     } 

回答

0

您可以使用此:setOffscreenPageLimit(INT限制)

,允許你viewpager,以節省您的尋呼機(如位置)的狀態..

順便說一下,這個github項目可能會幫助你:https://github.com/danilao/fragments-viewpager-example

你可以試試應用程序在這裏:https://play.google.com/store/apps/details?id=com.pineappslab.frcontainer

+0

不,它並沒有幫助我所有的片段viewpager,因爲我有完全不同的東西。你能解釋更多關於setOffScreenPageLiit()嗎? – Andrei

+0

我認爲你的getCurrentItem在錯誤的地方。爲什麼在你真正需要它之前不要執行int p = pager.getCurrentItem()?也看看這篇文章(http://stackoverflow.com/questions/8117523/how-can-i-get-page-number-in-view-pager-for-android) – Raghu

+0

號不工作.. – Andrei

相關問題