2017-03-05 17 views
1

我試圖將一個片段中單擊的圖像的位置傳遞給Pager FragmentActivity,以便它顯示在屏幕幻燈片中。我將意圖傳遞給尋呼機,但getItem()總是從我的相冊中的第一張圖像開始屏幕幻燈片,而不是我單擊的圖像。getItem()如何在ViewPager中的Android中工作?

以我ImageListFragment

public void onBindViewHolder(ViewHolder viewHolder, final int position) { 

     final int imageResId = mImageResIds[position]; 

     viewHolder.setData(imageResId); 
     viewHolder.itemView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = FooPager.newIntent(getActivity(), position); 
       startActivity (intent); 
       // mListener.OnGalleryImageSelected(imageResId); 
      } 
     }); 
    } 

然後在我的Pager FragmentActivity:

public static final String EXTRA_IMAGE_ID = "meow"; 
     public static int id = 0; 
     private ViewPager mViewPager; 
     private Integer images [] = { 
     R.drawable.a, R.drawable.b,R.drawable.c,R.drawable.d,R.drawable.e, 
     R.drawable.f, R.drawable.g, R.drawable.h,R.drawable.i,R.drawable.j, 
     R.drawable.k, R.drawable.l, R.drawable.m,R.drawable.n,R.drawable.o, 
     R.drawable.p, R.drawable.q, R.drawable.r 
}; 

public static Intent newIntent(Context packageContext, int id) { 
    Intent intent = new Intent(packageContext,FooPager.class); 
    intent.putExtra(EXTRA_IMAGE_ID,id); 
    return intent; 
} 

@Override 
protected void onCreate (Bundle savedInstanceState) { 
    super.onCreate (savedInstanceState); 
    setContentView(R.layout.activity_image_pager); 
    mViewPager = (ViewPager) findViewById (R.id.activity_image_pager_view_pager); 

    FragmentManager fragmentManager = getSupportFragmentManager(); 
    mViewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager) { 
     @Override 
     public Fragment getItem(int position) { 
      int id = images[position]; 
      return ImageDetailFragment.newInstance(id); 
     } 

     @Override 
     public int getCount() { 
      return images.length; 
     } 
    }); 

在的getItem position()總是從0開始,因此,在我的./drawable目錄總是選擇第一圖像。我如何使它在getItem()中的位置與我在ImageListFragment中單擊的圖像的位置一致?此時,getItem()不知道從意圖進入的位置,但我不知道如何解決此問題,而不會使getItem()反覆顯示相同的圖像(在屏幕滑動模式下)。

下面是更多的代碼:

http://pastebin.com/QgPfEisu

回答

2

我認爲問題是,你開始在下面的代碼每次點擊一個新的活動:

viewHolder.itemView.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    Intent intent = FooPager.newIntent(getActivity(), position); 
    startActivity (intent); 
    // mListener.OnGalleryImageSelected(imageResId); 
    } 
}); 

由於Activity重新開始,一切都重置。請參閱this example,以獲得更好,更標準的方法來處理您正在嘗試執行的操作。


將數據傳遞從FragmentActivity你建立你IntentPager,並把它傳遞給FooPager Activity如下:

尋呼機

public static Intent newIntent(Context packageContext, int id) { 
    Intent intent = new Intent(packageContext,FooPager.class); 
    intent.putExtra(EXTRA_IMAGE_ID,id); 
    return intent; 
} 

ImageListFragment

Intent intent = FooPager.newIntent(getActivity(), position); 
startActivity (intent); 

FooPager拿起EXTRA_IMAGE_ID,下面的代碼添加到FooPageronCreate

Bundle extras = getIntent().getExtras(); 
id = extras.getInt(EXTRA_IMAGE_ID); 

還應該有對空extras和失蹤EXTRA_IMAGE_ID一些額外的檢查,但是這是怎麼弄數據從ImageListFragmentActivity

+0

那麼如何從我的ImageListFragment到鏈接中描述的'FragmentStatePagerSupport'? (如果每次點擊創建一個新的意圖觸發一個新的活動)。 –

+0

查看我的更新回答。 – Cheticamp

相關問題