用按钮打开facebook页面时出现android错误
我想在我的应用程序中引用我的facebook页面 因此,当用户按下按钮时,他将被引导到fb应用程序中的我的fb页面 否则,他将被引导到我的fb网页在浏览器中 我不知道这是怎么回事,所以我处理了代码 从这篇文章 但我在这方面有错误,我似乎无法理解这个问题 这是密码用按钮打开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
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。天哪,我不敢相信我尝试了所有方法,但我没有想到这一点,谢谢你,你是一个活生生的储蓄者,上帝,我不敢相信我尝试了所有方法,但我没有想到这一点,谢谢你你是一个活生生的储蓄者,谢谢,这真是一个很好的信息,很抱歉,我不能选择两个答案作为最佳答案,但我真的很感谢你的努力,我很高兴我能帮上忙。祝你的项目好运!谢谢,这真的是一个很好的信息,很抱歉我不能选择两个答案作为最佳答案,但我真的很感谢你的努力,我很高兴我能帮上忙。祝你的项目好运!