使用 Fragments 进行 Facebook 共享

2023-12-07

我在用Facebbok在我的应用程序中共享,我有一个listview在我的列表项中我有一个Button,单击Button我正在尝试分享我的东西,但问题是当我用活动扩展我的类时,我的代码工作正常,但它不适用于Fragment,以下是我的代码片段,有帮助吗

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
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);
}

在片段活动结果调用之后

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Fragments 进行 Facebook 共享 的相关文章

随机推荐

  • 用 C 语言和两个整数发送信号

    你能帮我完成以下任务吗 编写一个C程序 将命令行参数1和2解释为pid和信号号 并将相应的信号号发送到进程pid 要将命令行参数解释为整数 可以使用 C 函数 atoi 用户将通过标准输出得知该过程有多成功 此外 还应使用合适的退出代码 这
  • Java 默认值混乱,为什么函数作用域变量没有默认值? [复制]

    这个问题在这里已经有答案了 我对在我看来不一致的背后的推理感到困惑 例如 public class Test static int a public static void main String args System out print
  • Apache CXF:- 如何使用 cxf 拦截器提取有效负载数据

    我应该遵循哪些步骤来使用 Apache CXF 拦截器提取有效负载 你的拦截器需要从AbstractPhaseInterceptor或子类 public class MyInterceptor extends AbstractPhaseIn
  • 如何回滚 TFS 签入?

    我想回滚最近在 TFS 中所做的更改 在 Subversion 中 这非常简单 然而 在TFS中似乎有一个令人难以置信的头痛问题 选项 1 获取先前版本 手动获取每个文件的先前版本 签出进行编辑 失败 结帐 在 VS2008 中 迫使我获取
  • Java中InputStream的内存问题

    我需要将文件读入字节数组 整个文件需要读入数组 问题是我收到 OutOfMemory 错误 因为文件大小太大 增加 XmX似乎没有任何效果 这是代码片段 InputStream in new FileInputStream file lon
  • 如果选中复选框,如何更改 div 的颜色?

    我有根据数据库记录创建的表 在 tbody 内部 我有 tr 创建每个表行 表行具有同一日期的多个时间段 如果选中复选框 我想更改时间块的背景颜色 我让我的复选框正常工作 我用警报和里面的一些文本进行了测试 现在我正在尝试更改背景颜色 但到
  • 值更改时 Swiftui Textfield 不更新

    我在表单上有一个文本字段 用户可以在其中输入值 但我还想使用按钮更新文本字段的内容 这是我的代码 struct test View State private var amount Double 0 0 var body some View
  • 汇编:在 Windows nasm 中处理用户输入

    我是 asm 的新手 试图制作一个简单的 hello world 等待用户按一个键结束 现在 hello world 一切都很好 但是我从中获得的 exe 控制台程序立即关闭 而我希望它保留在屏幕上 直到用户按下某个键 现在我遇到的问题是
  • 使用 javascript 对数组进行排序,然后按特定顺序按值的小数部分排序

    我有一个数组 let arr 100 12 100 8 100 11 100 9 排序后得到输出 100 11 100 12 100 8 100 9 但我希望它像页面索引一样排序 100 8 100 9 100 11 100 12 编辑 我
  • DC.js 交叉过滤器维度计数直方图

    我有一个交叉过滤器 输入了以下数据结构 project subproject cost data PrA SubPr1 100 PrA SubPr2 150 PrA SubPr3 100 PrB SubPr4 300 PrB SubPr5
  • 如何从 chrome 扩展监听 javascript 中的卸载事件?

    当用户从 Chrome 浏览器卸载我的扩展程序时 我试图清理一些首选项文件 在谷歌网站上 http code google com chrome extensions external extensions html 他们说 要卸载您的扩展
  • 取消 ThreadPool .QueueUserWorkItem 任务

    我需要取消使用 ThreadPool QueueUserWorkItem 启动的后台任务 我知道BackgroundWorker有专门针对此类事情的构造 但我相信在这种情况下它是矫枉过正的 因为不涉及用户界面 我所说的取消只是指强制完成回调
  • 如何使用内连接将两个数据表连接在一起

    所以我有 2 个数据表 我想将它们合并为 1 个 就像一个数据表与 sql server 中的内部联接合并一样 一个问题是两个表中的某些字段名称相同 但值可能不同 例如定价值 这两个表都有一个列 ID 它们具有相同的值并且可以连接 您可以通
  • 理解Fragment的setRetainInstance(boolean)

    从文档开始 公共无效setRetainInstance 布尔保留 控制是否在 Activity 重新创建过程中保留片段实例 例如从配置更改中 这只能与不在返回堆栈中的片段一起使用 如果设置 重新创建 Activity 时片段生命周期将略有不
  • VBA:仅导入 csv 文件的选定列

    我使用 VBA 将 csv 文件从 Yahoo Finance 导入到 Excel 中 每行包含 7 个逗号分隔的值 我只想导入每行的第一个和第五个逗号分隔值 目前 我导入整个 csv 将其提取到列 然后删除不需要的列 然而 这不足以满足将
  • Matlab dir() 需要永远运行

    我在包含 500 000 个文件的目录上使用命令 dir 现在已经运行了 15 分钟 有什么办法可以加快速度吗 也许有一个替代命令 提前致谢 Gil 如果您只想要文件名 请尝试files ls 根据帮助 我相信ls应该适用于任何操作系统 原
  • Python:替换双引号中的制表符

    您好 我有一行想要替换双引号中的制表符 我已经为此编写了脚本 但它没有按我想要的方式工作 我的线路 Q3U962 Mus musculus MRMP mouse Optimization MRMP mouse 我的脚本 for replin
  • ECMAScript 对象展开/休息 - 一次分配给多个属性

    新的对象休息 传播语法有一些令人惊讶的好应用 例如从对象中省略字段 是否有一种 建议的 方法也可以将同名变量的值分配给对象的多个属性 换句话说 更简短的说法是 o foo foo o bar bar o baz baz 注 在不丢失现有属性
  • Android Studio占用内存过多

    I had installed Android Studio 1 0 RC 2 I have 4GB of RAM installed but after starting Android Studio and launching Andr
  • 使用 Fragments 进行 Facebook 共享

    我在用Facebbok在我的应用程序中共享 我有一个listview在我的列表项中我有一个Button 单击Button我正在尝试分享我的东西 但问题是当我用活动扩展我的类时 我的代码工作正常 但它不适用于Fragment 以下是我的代码片