Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用按钮打开facebook页面时出现android错误_Android_Facebook_Facebook Graph Api - Fatal编程技术网

用按钮打开facebook页面时出现android错误

用按钮打开facebook页面时出现android错误,android,facebook,facebook-graph-api,Android,Facebook,Facebook Graph Api,我想在我的应用程序中引用我的facebook页面 因此,当用户按下按钮时,他将被引导到fb应用程序中的我的fb页面 否则,他将被引导到我的fb网页在浏览器中 我不知道这是怎么回事,所以我处理了代码 从这篇文章 但我在这方面有错误,我似乎无法理解这个问题 这是密码 import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm

我想在我的应用程序中引用我的facebook页面 因此,当用户按下按钮时,他将被引导到fb应用程序中的我的fb页面 否则,他将被引导到我的fb网页在浏览器中 我不知道这是怎么回事,所以我处理了代码 从这篇文章

但我在这方面有错误,我似乎无法理解这个问题 这是密码

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
错误:(50,38)错误:类信息弹出窗口中的getFacebookPageURL方法无法应用于给定类型;
必需:上下文
发现:
原因:无法通过方法调用转换将实际参数转换为上下文
您的作业:

String facebookUrl=getFacebookPageURL(这个)

在范围中,
引用您的匿名
视图。OnClickListener

您需要将分配声明更改为:

String facebookUrl=getFacebookPageURL(信息弹出窗口,这个)

。。。要正确引用您的
活动
实例。

您的作业:

String facebookUrl=getFacebookPageURL(这个)

在范围中,
引用您的匿名
视图。OnClickListener

您需要将分配声明更改为:

String facebookUrl=getFacebookPageURL(信息弹出窗口,这个)


。。。要正确引用您的
活动
实例。

问题在于以下片段:

    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接受上下文对象。解决您的问题的方法是使用

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

最后但并非最不重要的一点是,在声明对象名称时使用camelcase符号是一种很好的做法,因此在案例信息弹出窗口中应设置为InfoPopup的格式。

问题在于以下片段:

    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接受上下文对象。解决您的问题的方法是使用

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

最后但并非最不重要的一点是,在声明对象名称时使用camelcase符号是一种很好的做法,因此在您的案例中,信息弹出窗口的格式应为InfoPopup。

天哪,我不敢相信我尝试了所有方法,但我没有想到这一点,谢谢你,你是一个活生生的储蓄者,上帝,我不敢相信我尝试了所有方法,但我没有想到这一点,谢谢你你是一个活生生的储蓄者,谢谢,这真是一个很好的信息,很抱歉,我不能选择两个答案作为最佳答案,但我真的很感谢你的努力,我很高兴我能帮上忙。祝你的项目好运!谢谢,这真的是一个很好的信息,很抱歉我不能选择两个答案作为最佳答案,但我真的很感谢你的努力,我很高兴我能帮上忙。祝你的项目好运!