【发布时间】:2015-02-11 21:15:37
【问题描述】:
我有一个带有视图寻呼机和三个标签的片段 “FragmentOne”“FragmentTwo”等
在每个片段(页面)中,我想设置来自画廊或相机的图像。但是当我在 FragmentOne 选项卡中设置图像(位图)时,位图也显示在其他片段中。但我希望独特的选定图像应显示在相应片段的 Imageview 中。
我的 ViewPager 类看起来像。
public class MainFragment extends Fragment {
private ViewPager mViewPager;
private SlidingTabLayout mSlidingTabLayout;
// Tabs titles
private String[] tabsTitles = {"One", "Two", "Three"};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.new_proj_frag_layout, container, false);
// ViewPager
mViewPager = (ViewPager) rootView.findViewById(R.id.viewpager);
mViewPager.setOffscreenPageLimit(3);
mViewPager.setAdapter(new ViewPagerAdapter(getChildFragmentManager(), tabsTitles));
// Sliding tab layout
mSlidingTabLayout = (SlidingTabLayout) rootView.findViewById(R.id.sliding_tabs);
mSlidingTabLayout.setViewPager(mViewPager);
return rootView;
}
片段一
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.white_fragment_layout, container, false);
image_one_btn = (ImageView) rootView.findViewById(R.id.image_one_click);
image_one_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
selectImage();
}
});
return rootView;
}
private void selectImage() {
Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
getParentFragment().startActivityForResult(i, 1);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (data != null) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getActivity().getContentResolver().query(selectedImage,filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
Log.i("ImagePath:","===="+picturePath);
image_one_btn.setImageBitmap(BitmapFactory.decodeFile(picturePath));
cursor.close();
} else {
Toast.makeText(getActivity(), "Try Again!!", Toast.LENGTH_SHORT).show();
}
}
ViewPagerAdapter
public class ViewPagerAdapter extends FragmentPagerAdapter {
private String[] tabsTitles;
public ViewPagerAdapter(FragmentManager fm, String[] tabsTitles) {
super(fm);
this.tabsTitles = tabsTitles;
}
@Override
public CharSequence getPageTitle(int position) {
return tabsTitles[position];
}
@Override
public Fragment getItem(int index) {
switch(index) {
case 0:
return new ImageOneFragment();
case 1:
return new ImageTwoFragment();
case 2:
return new ImageThreeFragment();
}
return null;
}
@Override
public int getCount() {
return tabsTitles.length;
}
}
【问题讨论】:
-
片段二代码在哪里?你能把它也放在这里吗?
-
FragmentTwo 代码也与 fragmentOne 代码类似。
-
您能发布您的视图寻呼机适配器实现吗?
标签: android android-fragments android-viewpager