【问题标题】:android error on facebook page open with a buttonfacebook页面上的android错误打开一个按钮
【发布时间】:2016-08-10 20:48:29
【问题描述】:

我想在我的应用中引用我的 Facebook 页面 因此,当用户按下按钮时,他将被定向到我在 fb 应用程序中的 fb 页面 否则他将在浏览器中被定向到我的 fb 页面 我不知道这是如何工作的,所以我处理了代码 来自这篇文章

enter link description here

但我在 (this) 中遇到错误,我似乎无法理解问题所在 这是代码

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.Button;
public class info_popup extends Activity {
public static String FACEBOOK_URL = "https://www.facebook.com/ahmednageebobiad";
public static String FACEBOOK_PAGE_ID = "Ahmed Nageeb";
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_info_popup);






        DisplayMetrics DM = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(DM);
        int Width = DM.widthPixels;
        int Hieght = DM.heightPixels;
        getWindow().setLayout((int) (Width * .8), (int) (Hieght * .6));

        Button button2 = (Button) findViewById(R.id.button2);
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {










                Intent facebookIntent = new Intent(Intent.ACTION_VIEW);
                String facebookUrl = getFacebookPageURL(this);
                facebookIntent.setData(Uri.parse(facebookUrl));
                startActivity(facebookIntent);
            }


        });

//method to get the right URL to use in the intent



}
    public String getFacebookPageURL(Context context) {
        PackageManager packageManager = context.getPackageManager();
        try {
            int versionCode = packageManager.getPackageInfo("com.facebook.katana", 0).versionCode;
            if (versionCode >= 3002850) { //newer versions of fb app
                return "fb://facewebmodal/f?href=" + FACEBOOK_URL;
            } else { //older versions of fb app
                return "fb://page/" + FACEBOOK_PAGE_ID;
            }
        } catch (PackageManager.NameNotFoundException e) {
            return FACEBOOK_URL; //normal web url
        }
    }
}

这是错误

    Error:(50, 38) error: method getFacebookPageURL in class info_popup cannot be applied to given types;
required: Context
found: <anonymous OnClickListener>
reason: actual argument <anonymous OnClickListener> cannot be converted to Context by method invocation conversion

【问题讨论】:

    标签: android facebook facebook-graph-api


    【解决方案1】:

    你的任务:

    String facebookUrl = getFacebookPageURL(this);

    在范围内,this 指的是您的匿名View.OnClickListener

    您需要将赋值语句更改为:

    String facebookUrl = getFacebookPageURL(info_popup.this);

    ...正确引用您的 Activity 实例。

    【讨论】:

    • 上帝,我不敢相信我尝试了一切,但这并没有引起我的注意,谢谢你,你是一个活生生的救星,哈哈
    【解决方案2】:

    问题出在以下片段:

        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent facebookIntent = new Intent(Intent.ACTION_VIEW);
                String facebookUrl = getFacebookPageURL(this);
                facebookIntent.setData(Uri.parse(facebookUrl));
                startActivity(facebookIntent);
            }
    
        });
    

    当您调用 getFacebookPageURL 时,您位于 View.OnClickListener 类型的匿名类中,因此当您传递“this”时,您传递的是 View.OnClickListener 类的实例,但 getFacebookPageURL 接受 Context 对象。您的问题的解决方案是使用

    getFacebookPageURL(info_popup.this)
    

    或为上下文实例创建字段,例如:

    private Context mContext;
    public class info_popup extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mContext = this;
            ...
            getFacebookPageURL(mContext)
    }
    

    最后但并非最不重要的一点是,在声明对象名称时使用驼峰表示法是一种好习惯,因此在您的情况下 info_popup 应该是 InfoPopup 的格式。

    【讨论】:

    • 谢谢伙计,这真是一个很好的信息,我很抱歉我不能选择两个答案作为最佳答案,但我真的很感谢你的努力
    • 很高兴能帮上忙。祝你的项目好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    相关资源
    最近更新 更多