为什么Facebook的共享与片段工作吗? [英] why the Facebook sharing is not working with Fragments?
本文介绍了为什么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屋!
查看全文