为什么Facebook的共享与片段工作吗? [英] why the Facebook sharing is not working with Fragments?

查看:163
本文介绍了为什么Facebook的共享与片段工作吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是用我的应用程序 Facebbok 共享,我有一个列表视图在我的列表项我有一个按钮,在按钮我试图分享我的东西,但问题是我的code的点击当我致以具有活性的类,但它不会与片段工作的正常工作,以下是我的代码片段code,任何帮助

TestFrag.java

 公共类TestFrag扩展片段{    静态CallbackManager callbackManager;
    私有静态LoginManager经理;
    ListView控件列表;
    按钮btnPost;
    上下文语境;
    静态活动活动;    ArrayList的prgmName;
    公共静态INT [] = prgmImages {R.drawable.ic_launcher,R.drawable.ic_launcher,
            R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,
            R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,
            R.drawable.ic_launcher};
    公共静态的String [] = prgmNameList {让我们C,C ++,JAVA,以.jsp
            微软的.Net,机器人,PHP,jQuery的,JavaScript的};    @Nullable
    @覆盖
    公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){        FacebookSdk.sdkInitialize(getActivity());
        查看rootView = inflater.inflate(R.layout.tester,集装箱,FALSE);
        callbackManager = CallbackManager.Factory.create();
        上下文= getActivity();
        活性= getActivity();
        名单=(ListView控件)rootView.findViewById(R.id.listView);
        list.setAdapter(新CustomListAdapter(getActivity(),prgmNameList,prgmImages));        返回rootView;
    }    公共静态无效publishImage(){
        位图图像= BitmapFactory.de codeResource(activity.getResources()
                R.drawable.ic_launcher);        SharePhoto照片=新SharePhoto.Builder()。setBitmap(图)
                .setCaption(欢迎到Facebook的照片共享类固醇!)
                。建立();        SharePhotoContent内容=新SharePhotoContent.Builder()。addPhoto(
                照片).build();        ShareApi.share(内容,NULL);
        Toast.makeText(活动,Succsesfully贴在墙上,
                Toast.LENGTH_LONG).show();    }    @覆盖
    公共无效的onActivityResult(INT申请code,INT响应code,
                                 意图数据){
        super.onActivityResult(要求code,响应code,数据);
        callbackManager.onActivityResult(要求code,响应code,数据);
    }    公共静态无效FaceBookSharing(){
        //标题= ed_title.getText()的toString()。
        // DES = ed_dec.getText()的toString();
        //
        // callbackManager = CallbackManager.Factory.create();
        // shareDialog =新ShareDialog(本);
        // shareDialog.registerCallback(callbackManager,
        //新FacebookCallback< Sharer.Result>(){
        //
        // @覆盖
        //公共无效onCancel(){
        //的System.out.println(取消);
        //}
        //
        // @覆盖
        //公共无效onerror的(FacebookException E){
        // e.printStackTrace();
        //}
        //
        // @覆盖
        //公共无效的onSuccess(Sharer.Result结果){
        //的System.out.println(成功);
        //
        //}
        //});
        //
        //如果(ShareDialog.canShow(ShareLinkContent.class)){
        //
        // ShareLinkContent linkContent =新ShareLinkContent.Builder()
        // .setContentTitle(职称).setContentDescription(DES)
        // .setContentUrl(Uri.parse(图片))
        // .setImageUrl(Uri.parse(图片))建立()。
        //
        // shareDialog.show(linkContent);
        //
        //}        清单<串GT; permissionNeeds = Arrays.asList(publish_actions);        经理= LoginManager.getInstance();        manager.logInWithPublishPermissions(活动,permissionNeeds);        manager.registerCallback(callbackManager,
                新FacebookCallback< LoginResult>(){
                    @覆盖
                    公共无效的onSuccess(LoginResult loginResult){
                        publishImage();                    }                    @覆盖
                    公共无效onCancel(){
                        // TODO自动生成方法存根                    }                    @覆盖
                    公共无效onerror的(FacebookException错误){
                        // TODO自动生成方法存根                    }                });
    }    公共无效的onClick(视图v){        如果(V == btnPost){
            FaceBookSharing();
        }    }    公共类CustomListAdapter延伸BaseAdapter {
        的String []的结果;
        上下文语境;
        INT [] imageId;
        私人LayoutInflater吹气= NULL;        公共CustomListAdapter(上下文的背景下,字符串[] prgmNameList,
                                 INT [] prgmImages){
            // TODO自动生成构造函数存根
            结果= prgmNameList;
            this.context =背景;
            imageId = prgmImages;
            吹气=(LayoutInflater)上下文
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }        @覆盖
        公众诠释的getCount(){
            // TODO自动生成方法存根
            返回result.length;
        }        @覆盖
        公共对象的getItem(INT位置){
            // TODO自动生成方法存根
            返回的位置;
        }        @覆盖
        众长getItemId(INT位置){
            // TODO自动生成方法存根
            返回的位置;
        }        公共类持有人{
            按钮电视;
            ImageView的IMG;
        }        @覆盖
        公共查看getView(最终诠释的立场,观点convertView,父母的ViewGroup){
            // TODO自动生成方法存根
            持有人持有人=新的持有人();
            查看rowView;
            rowView = inflater.inflate(R.layout.custom,NULL);
            holder.tv =(按钮)rowView.findViewById(R.id.btnPost);
            holder.img =(ImageView的)rowView.findViewById(R.id.imageView1);
            // holder.tv.setText(结果[位置]);
            holder.img.setImageResource(imageId [位置]);
            holder.tv.setOnClickListener(新View.OnClickListener(){
                @覆盖
                公共无效的onClick(视图v){
                    // TODO自动生成方法存根
                    Toast.makeText(背景下,你点击+结果[位置]
                            Toast.LENGTH_LONG).show();
                    TestFrag.FaceBookSharing();
                }
            });
            返回rowView;
        }    }
}


解决方案

覆盖此方法在您的主要活动

  @覆盖
保护无效的onActivityResult(INT申请code,INT结果code,意图数据){
    super.onActivityResult(要求code,结果code,数据);    TestFrag demoFragment =(TestFrag)getSupportFragmentManager()findFragmentByTag(测试)。
    demoFragment.onActivityResult(要求code,结果code,数据);
}

您片段活动结果电话后

I am using Facebbok sharing in my app,i have one listview and in my list item i have one Button,on click of the Button i am trying to share my stuffs,but the issue is my code works fine when i extend my class with activity,but it does not work with Fragment,Following is my snippet code,any help

TestFrag.java

public class TestFrag extends Fragment{

    static CallbackManager callbackManager;
    private static LoginManager manager;
    ListView list;
    Button btnPost;
    Context context;
    static Activity activity;

    ArrayList prgmName;
    public static int[] prgmImages = {R.drawable.ic_launcher, R.drawable.ic_launcher,
            R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher,
            R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher,
            R.drawable.ic_launcher};
    public static String[] prgmNameList = {"Let Us C", "c++", "JAVA", "Jsp",
            "Microsoft .Net", "Android", "PHP", "Jquery", "JavaScript"};

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        FacebookSdk.sdkInitialize(getActivity());
        View rootView = inflater.inflate(R.layout.tester, container, false);


        callbackManager = CallbackManager.Factory.create();
        context = getActivity();
        activity = getActivity();
        list = (ListView)rootView.findViewById(R.id.listView);
        list.setAdapter(new CustomListAdapter(getActivity(), prgmNameList, prgmImages));

        return rootView;
    }

    public static void publishImage() {
        Bitmap image = BitmapFactory.decodeResource(activity.getResources(),
                R.drawable.ic_launcher);

        SharePhoto photo = new SharePhoto.Builder().setBitmap(image)
                .setCaption("Welcome To Facebook Photo Sharing on steroids!")
                .build();

        SharePhotoContent content = new SharePhotoContent.Builder().addPhoto(
                photo).build();

        ShareApi.share(content, null);
        Toast.makeText(activity, "Succsesfully posted on your wall",
                Toast.LENGTH_LONG).show();

    }

    @Override
    public void onActivityResult(int requestCode, int responseCode,
                                 Intent data) {
        super.onActivityResult(requestCode, responseCode, data);
        callbackManager.onActivityResult(requestCode, responseCode, data);
    }

    public static void FaceBookSharing() {
        // title = ed_title.getText().toString();
        // des = ed_dec.getText().toString();
        //
        // callbackManager = CallbackManager.Factory.create();
        // shareDialog = new ShareDialog(this);
        // shareDialog.registerCallback(callbackManager,
        // new FacebookCallback<Sharer.Result>() {
        //
        // @Override
        // public void onCancel() {
        // System.out.println("Cancel");
        // }
        //
        // @Override
        // public void onError(FacebookException e) {
        // e.printStackTrace();
        // }
        //
        // @Override
        // public void onSuccess(Sharer.Result result) {
        // System.out.println("Success");
        //
        // }
        // });
        //
        // if (ShareDialog.canShow(ShareLinkContent.class)) {
        //
        // ShareLinkContent linkContent = new ShareLinkContent.Builder()
        // .setContentTitle(title).setContentDescription(des)
        // .setContentUrl(Uri.parse(image))
        // .setImageUrl(Uri.parse(image)).build();
        //
        // shareDialog.show(linkContent);
        //
        // }

        List<String> permissionNeeds = Arrays.asList("publish_actions");

        manager = LoginManager.getInstance();

        manager.logInWithPublishPermissions(activity, permissionNeeds);

        manager.registerCallback(callbackManager,
                new FacebookCallback<LoginResult>() {
                    @Override
                    public void onSuccess(LoginResult loginResult) {
                        publishImage();

                    }

                    @Override
                    public void onCancel() {
                        // TODO Auto-generated method stub

                    }

                    @Override
                    public void onError(FacebookException error) {
                        // TODO Auto-generated method stub

                    }

                });
    }

    public void onClick(View v) {

        if (v == btnPost) {
            FaceBookSharing();
        }

    }



    public class CustomListAdapter extends BaseAdapter {
        String[] result;
        Context context;
        int[] imageId;
        private LayoutInflater inflater = null;

        public CustomListAdapter(Context context, String[] prgmNameList,
                                 int[] prgmImages) {
            // TODO Auto-generated constructor stub
            result = prgmNameList;
            this.context = context;
            imageId = prgmImages;
            inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return result.length;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }

        public class Holder {
            Button tv;
            ImageView img;
        }

        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            Holder holder = new Holder();
            View rowView;
            rowView = inflater.inflate(R.layout.custom, null);
            holder.tv = (Button) rowView.findViewById(R.id.btnPost);
            holder.img = (ImageView) rowView.findViewById(R.id.imageView1);
            // holder.tv.setText(result[position]);
            holder.img.setImageResource(imageId[position]);
            holder.tv.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    Toast.makeText(context, "You Clicked " + result[position],
                            Toast.LENGTH_LONG).show();
                    TestFrag.FaceBookSharing();
                }
            });
            return rowView;
        }

    }
}

解决方案

Override this method on your main activity

 @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    TestFrag demoFragment = (TestFrag) getSupportFragmentManager().findFragmentByTag("test");
    demoFragment.onActivityResult(requestCode, resultCode, data);
}

after your fragment activity result call

这篇关于为什么Facebook的共享与片段工作吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆