जावा गुमनाम वर्ग (एक अंतरफलक को लागू करने) कॉलबैक अशक्त जब एक और कार्य करने के लिए पारित कर दिया है

वोट
1

मैं एंड्रॉयड जावा JsonObjectRequests के लिए एक कॉलबैक लागू करने के लिए प्रयास कर रहा हूँ। मैं कोड है कि लगभग शब्दशः है दिखा पदों के दर्जनों पाया है। मेरी समस्या यह है कि callbackरिक्त है। दो इनलाइन टिप्पणी देखें।

public interface JsonObjectCallbackInterface {
    void onSuccess(JSONObject result);
}
class DispatchBuddyBase {
    //...

    public void addGmapMarker(String inAddress) {
        final String address = DBB.prepareAddress(inAddress);
        DatabaseReference ref = DBB.getTopPathRef(/geocodedAddresses);

        ref.orderByChild(address)
                .equalTo(address)
                .addListenerForSingleValueEvent(
                new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Log.i(TAG, address+ stored: +dataSnapshot.exists());
                if (!dataSnapshot.exists()) {
                    DBB.getLatLng(
                           17 River Rd Meriden CT 06451,
                            new JsonObjectCallbackInterface() {
                         //      ^--- why is this passing a **null?**

                        @Override
                        public void onSuccess(JSONObject response) {
                            Log.i(TAG, got a json body:+response.toString());
                            addGmapMarker(response);
                        }
                    });
                }
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
            }
        });
    }
}
public class DispatchesActivity extends AppCompatActivity implements
    OnMapReadyCallback,
    GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener,
    ResultCallback<LocationSettingsResult> {
    //...

    public void getLatLng(final String address,
                          final JsonObjectCallbackInterface callback) {
        // why does this get a **null** callback? -------------^

        Log.e(TAG, callback is: +callback);
        String url = https://maps.googleapis.com/maps/api/geocode/json?address=
                + address;

        JsonObjectRequest jsObjRequest = new JsonObjectRequest
                (Request.Method.GET, url, null, new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        Log.e(TAG,Response:  + response.toString());
                        DatabaseReference ref = getTopPathRef(/geocodedAddresses).push();

                        Map<String, Object> u = new HashMap<>();
                        u.put(address, address);
                        u.put(geocoded, response.toString());

                        ref.updateChildren(u, new DatabaseReference.CompletionListener() {
                            @Override
                            public void onComplete(DatabaseError databaseError,
                                                   DatabaseReference databaseReference) {
                                if (databaseError != null) {
                                    Log.e(TAG,Geocoded address could not be saved 
                                            + databaseError.getMessage());
                                } else {
                                    Log.e(TAG,Geocoded address saved successfully.);
                                }
                            }
                        });
                        Log.e(TAG, callback2 is: +callback);
                        callback.onSuccess(response);
                    }
                }, new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        // TODO Auto-generated method stub
                    }
                });

        DBVolley.getInstance(context)
                .addToRequestQueue(jsObjRequest);
    }
}

स्पष्ट रूप से, मैं एक बार ध्यान दें कि था कि callbackरिक्त नहीं था सिर्फ एक बार जब मैं परीक्षण किया गया था। दोहराएँ रन तब से एक गैर-शून्य कॉलबैक का उत्पादन नहीं किया है। मैं जावा में केवल 8 दिन हूँ, इसलिए क्षमा कृपया अगर मैंने कुछ अनुभवहीन किया है।

DispatchBuddyBaseसिंगलटन सिर्फ एक बार मुख्य गतिविधि में instanced है, और DBVolleyवैसे ही। सभी अतिरिक्त संदर्भ के माध्यम से ही प्राप्त DispatchBuddyBase.getInstance()। मैं कहीं और गुमनाम वर्गों के साथ कोई समस्या नहीं पड़ा है।

वॉली कोड नंगे हड्डियों है और ठीक अनुरोध बंद आग, JsonObjectRequest सफलतापूर्वक सब कुछ मैं गूगल से उम्मीद हो जाता है। बाकी सब कुछ इस कॉलबैक के अलावा प्रफुल्लित काम कर रहा है।

क्या मैं सही ढंग से इस कॉलबैक पारित करने के लिए तय करने के लिए की जरूरत है?

22/02/2018 को 09:22
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

ठीक है, यह हल अंकन। Occam के रेजर। मैं अनजाने कोड के दूसरे खंड कि कॉलबैक के लिए एक शाब्दिक अशक्त पैरामीटर के साथ बुला रहा था में बहुत ज्यादा और uncommented Ctrl-Z मारा।

उपरोक्त कोड पूरी तरह से काम करता है।

22/02/2018 को 21:29
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more