मैं एप्लिकेशन बना रहा हूं जिसके लिए फेसबुक से डेटा प्राप्त करने की आवश्यकता है। डुप्लिकेटिंग कोड से बचने के लिए मैंने GraphRequest के लिए कक्षा बनाने का निर्णय लिया।किसी अन्य वर्ग से फेसबुक ग्राफरक्वेट को कॉल करना शून्य
public class FacebookRequest {
private static JSONObject object;
private FacebookRequest(JSONObject object) {
this.object = object;
}
private static JSONObject GraphApiRequest(String path, AccessToken token){
new GraphRequest(
token,
path,
null,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
object = response.getJSONObject();
}
}
).executeAsync();
return object;
}
public static JSONObject getGraphApi(String path, AccessToken token){
return GraphApiRequest(path, token);
}}
वर्ग कॉल करने के लिए मैं उपयोग
private static FacebookRequest fbRequest;
//....
JSONObject object= fbRequest.getGraphApi(path,token);
समस्या है GraphApiRequest
विधि हमेशा object=null
और केवल उस अनुरोध को निष्पादित करने के बाद वापस आती है।
कॉल पर वास्तविक ऑब्जेक्ट प्राप्त करने के लिए मुझे क्या बदलना चाहिए?
संपादित करें:
तो This answer को धन्यवाद मैं फोन पर वस्तु प्राप्त करने के लिए एक समाधान मिला, लेकिन यह बाद से मैं बहुत प्रोग्रामिंग में अनुभव नहीं कर रहा हूँ, सही विकल्प (शायद भी गलत नहीं है, लेकिन इसके लिए काम करता है मुझे)
public class FacebookRequest {
private JSONObject object;
public FacebookRequest(String path, AccessToken token) {
new GraphRequest(
token,
path,
null,
HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(GraphResponse response) {
object = response.getJSONObject();
}
}
).executeAsync();
}
public JSONObject getObject(){
return object;
}
}
जब मैं अनुरोध बोल रहा हूँ यह मिल के कुछ समय के बाद मार डाला
protected void onCreate(Bundle savedInstanceState) {
//...
FacebookRequest fbRequest = new FacebookRequest(path,token);
//...
}
कॉल पर वास्तविक ऑब्जेक्ट प्राप्त करने के लिए मैं उपयोग करता हूं।
JSONObject object = fbRequest.getObject();
यह अभी भी काम नहीं कर रहा है, तो मैं सही निर्माता बनाने के बाद एक JSONObject के लिए कहते हैं। मैं इस कोड को बेहतर बनाने की उम्मीद कर रहा हूं, अगर आप मुझे कुछ सलाह देंगे।
आप प्रतिक्रिया (आप '.executeAsyc की वजह से प्रतीक्षा नहीं कर रहे()') के लिए प्रतीक्षा करने के लिए और फिर GetObject का उपयोग() आप निर्माता बनाने के बाद वस्तु * सही प्राप्त करना चाहते हैं, तो * है। ''executeAsync()' 'executeAsync() ''executeAwync()' 'executeAndWait() 'के साथ' .executeAndWait() 'को' फेसबुकRequest'constructor –