Android 如何使用查看寻呼机共享图像

Android 如何使用查看寻呼机共享图像,android,android-viewpager,shareactionprovider,Android,Android Viewpager,Shareactionprovider,我想分享一些图片。。我正在使用viewpager 如何获取要共享的图像ID。?因为viewpager不支持onclickitemlistener属性。请建议我如何将图像id获取到dhare如果您实现了,您的每个页面都可以承载您设计的一个实例,其布局用XML定义。这将允许您包含任何您需要的内容来组成您的自定义共享UI 发件人: 这最适合在页面数量不确定的对象集合中进行分页。它会在用户导航到其他页面时销毁片段,从而最大限度地减少内存使用 例如,您可以使用以下方法在对象集合上滑动: 在您的情况下,您

我想分享一些图片。。我正在使用viewpager 如何获取要共享的图像ID。?因为viewpager不支持onclickitemlistener属性。请建议我如何将图像id获取到dhare

如果您实现了,您的每个页面都可以承载您设计的一个实例,其布局用XML定义。这将允许您包含任何您需要的内容来组成您的自定义共享UI

发件人:

这最适合在页面数量不确定的对象集合中进行分页。它会在用户导航到其他页面时销毁片段,从而最大限度地减少内存使用

例如,您可以使用以下方法在对象集合上滑动:


在您的情况下,您可以更改每个页面所选事件的共享意图,如下所示:

public class CollectionDemoActivity extends FragmentActivity {
    // When requested, this adapter returns a DemoObjectFragment,
    // representing an object in the collection.
    DemoCollectionPagerAdapter mDemoCollectionPagerAdapter;
    ViewPager mViewPager;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_collection_demo);

        // ViewPager and its adapters use support library
        // fragments, so use getSupportFragmentManager.
        mDemoCollectionPagerAdapter =
                new DemoCollectionPagerAdapter(
                        getSupportFragmentManager());
        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mDemoCollectionPagerAdapter);
    }
}

// Since this is an object collection, use a FragmentStatePagerAdapter,
// and NOT a FragmentPagerAdapter.
public class DemoCollectionPagerAdapter extends FragmentStatePagerAdapter {
    public DemoCollectionPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        Fragment fragment = new DemoObjectFragment();
        Bundle args = new Bundle();
        // Our object is just an integer :-P
        args.putInt(DemoObjectFragment.ARG_OBJECT, i + 1);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public int getCount() {
        return 100;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return "OBJECT " + (position + 1);
    }
}

// Instances of this class are fragments representing a single
// object in our collection.
public static class DemoObjectFragment extends Fragment {
    public static final String ARG_OBJECT = "object";

    @Override
    public View onCreateView(LayoutInflater inflater,
            ViewGroup container, Bundle savedInstanceState) {
        // The last two arguments ensure LayoutParams are inflated
        // properly.
        View rootView = inflater.inflate(
                R.layout.fragment_collection_object, container, false);
        Bundle args = getArguments();
        ((TextView) rootView.findViewById(android.R.id.text1)).setText(
                Integer.toString(args.getInt(ARG_OBJECT)));
        return rootView;
    }
}
如何获取要共享的图像ID

使用
ViewPager.getCurrentItem()
从ViewPager获取当前图像id:

1。
ELImageAdapter
类中创建一个方法以获取当前选定的图像id:

pager.setOnPageChangeListener(new  ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int i, float v, int i2) {

        }

        @Override
        public void onPageSelected(int i) {
            setShareIntentForPosition(i);
        }

        @Override
        public void onPageScrollStateChanged(int i) {

        }
    });

private void setShareIntentForPosition(int currentPosition){
    Bitmap bitmap;
    OutputStream output;
    bitmap = BitmapFactory.decodeResource(getResources(),adapter.GalImages[currentPosition]); 
    File filepath = Environment.getExternalStorageDirectory();
    File dir = new File(filepath.getAbsolutePath() + "/Eye Liner/");
    dir.mkdirs();
    File file = new File(dir, "Image.png"); 
    try {
    Intent share = new Intent(Intent.ACTION_SEND);
    share.setAction(Intent.ACTION_SEND);
    share.setType("image/jpeg");
    output = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, output);
    output.flush();
    output.close();
    Uri uri = Uri.fromFile(file);
    share.putExtra(Intent.EXTRA_STREAM, uri);
    setShareIntent(share);
}
private void setShareIntent(Intent intent) {
    if (provider != null) {
           provider.setShareIntent(intent);
    }
}
2.调用
getImageId
方法,使用
oncreateoptions菜单中的适配器对象
方法:

public int getImageId(int pos){
   return GalImages[pos];
 }
现在使用
currentImgId
id共享所选图像

 int currentPos=pager.getCurrentItem();
 int currentImgId=adapter.getImageId(currentPos);

其中适配器是
CustomAdapter
viewpager
创建页面的对象,
myPager
viewpager
的参考变量,在此处输入代码,图像是存储图像路径的数组列表

要获取哪个映像id用于共享?用户选择的映像在映像适配器类中Thanx alot:)m尝试实现它不起作用。。每当我点击打开活动。。活动已停止error@user4440416:是否在
currentImgId
中获取正确的id?位图=BitmapFactory.decodeResource(getResources(),adapter.GalImages[currentImgId]);不,我用过这个。。它不起作用。和currentImgId=adapter.getImageId(currentPos);作为你suggest@user4440416:我的意思是在
currentImgId
中得到什么值?@user4440416:并查看下面的帖子以获取所选图像的文件public void onPageSelected(int i){Intent it=getIntent();//selected image id position=it.getExtras().getInt(“position”);}我用过这个,但当我刷到下一张图片时。。活动已经停止
public int getImageId(int pos){
   return GalImages[pos];
 }
 int currentPos=pager.getCurrentItem();
 int currentImgId=adapter.getImageId(currentPos);
File file = new File(adapter.images.get(myPager.getCurrentItem()));
Intent mShareIntent = new Intent(Intent.ACTION_SEND);
mShareIntent.setType("image/*");    
mShareIntent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file));  
startActivity(Intent.createChooser(mShareIntent,"Shareith:"));