【问题标题】:Share Image From Viewpager从 Viewpager 共享图像
【发布时间】:2017-04-17 09:31:41
【问题描述】:

我想从 ViewPager 共享当前项目,但我无法获取当前图像并共享它。

分享按钮只在推广页面的action bar上,它会从ViewPager分享当前的item。

这是我的适配器:

class CustomPagerAdapter extends PagerAdapter {
int[] mResources = {
        R.drawable.abc1,
        R.drawable.abc2
};
Context mContext;
LayoutInflater mLayoutInflater;

public CustomPagerAdapter(Context context) {
    mContext = context;
    mLayoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

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

@Override
public boolean isViewFromObject(View view, Object object) {
    return view == ((LinearLayout) object);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
    View itemView = mLayoutInflater.inflate(R.layout.slidingimages_layout, container, false);

    ImageView imageView = (ImageView) itemView.findViewById(R.id.imageView);
    imageView.setImageResource(mResources[position]);

    container.addView(itemView);
    return itemView;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView((LinearLayout) object);
}
}

这是我的 Fragment Java 代码:

public class PromotionFragment extends Fragment {
Menu menu;
private PopupWindow Pro_popup;

public PromotionFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}
public void onCreateOptionsMenu(Menu menu,MenuInflater inflater) {
    // Inflate the menu; this adds items to the action bar if it is present.
    inflater.inflate(R.menu.toolbar_menu, menu);//Menu Resource, Menu
    super.onCreateOptionsMenu(menu,inflater);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View view = inflater.inflate(R.layout.fragment_promotion, container, false);
    CustomPagerAdapter adapter = new CustomPagerAdapter(getActivity());

    ViewPager viewpager = (ViewPager) view.findViewById(R.id.pager);
    viewpager.setAdapter(adapter);

    LinePageIndicator titleIndicator = (LinePageIndicator)view.findViewById(R.id.indicator);
    titleIndicator.setViewPager(viewpager);


    return view;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    Display display = getActivity().getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    final int width = size.x;
    final int height = size.y;
    RelativeLayout pro_popup = (RelativeLayout) getActivity().findViewById(R.id.pro_popup);
    LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(LAYOUT_INFLATER_SERVICE);
    View pro_popupview = inflater.inflate(R.layout.promotion_popup, null);
    TextView qr_title = (TextView) pro_popupview.findViewById(R.id.qr_title);
    TextView qr_con = (TextView) pro_popupview.findViewById(R.id.qr_con);
    RelativeLayout popupbg2 = (RelativeLayout) pro_popupview.findViewById(R.id.prepopup);
    Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.qr_code);
    Button scan_btn = (Button) pro_popupview.findViewById(R.id.scan_btn);
    scan_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
        }
    });
    Button dismiss = (Button) pro_popupview.findViewById(R.id.propop_dismiss);
    dismiss.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Pro_popup.dismiss();
        }

    });
    switch (item.getItemId()) {
        case R.id.qr_scan:
            qr_title.setText(R.string.propop_title);
            qr_con.setText(R.string.propop_con);
            Pro_popup = new PopupWindow(pro_popupview);
            Pro_popup.setWidth(width - 80);
            Pro_popup.setHeight(height - 400);
            Pro_popup.setOutsideTouchable(true);
            Pro_popup.setFocusable(true);
            Pro_popup.showAtLocation(pro_popup, Gravity.CENTER, 0, -60);

            return true;
        case R.id.toolbarshare:
            final Intent shareIntent = new Intent(Intent.ACTION_SEND);
            shareIntent.setType("image/jpg");
            startActivity(Intent.createChooser(shareIntent, "Share image using"));
            CustomPagerAdapter adapter = new CustomPagerAdapter(getActivity());
            ViewPager viewpager = (ViewPager)getActivity().findViewById(R.id.pager);
            viewpager.setAdapter(adapter);
            int position = viewpager.getCurrentItem();
            if(position == 0)
            {
                final File photoFile = new File(getActivity().getFilesDir(), "abc1.png");
                shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(photoFile));
            }
            else
            {
                final File photoFile = new File(getActivity().getFilesDir(), "abc1.png");
                shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(photoFile));
            }
            return true;
    }

    return false;
}

【问题讨论】:

    标签: android android-viewpager android-sharing


    【解决方案1】:

    当用户单击共享按钮时,您正在 viewpager 中设置适配器

    CustomPagerAdapter adapter = new CustomPagerAdapter(getActivity());
    ViewPager viewpager = (ViewPager)getActivity().findViewById(R.id.pager);
    viewpager.setAdapter(adapter);
    

    删除此代码。

    您只需要在用户点击分享按钮时获取ViewPager 的位置

    viewpager.getCurrentItem();
    

    确保全局定义 viewpager 变量,以便您可以在片段中的任何位置访问它。

    还有一件事

    startActivity(Intent.createChooser(shareIntent, "Share image using"));
    

    它应该在 return 语句之前的条件末尾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      相关资源
      最近更新 更多