clasă anonimă Java (punerea în aplicare a unei interfețe) de apel invers este nul atunci când a trecut la o altă funcție

voturi
1

Sunt încercarea de a pune în aplicare un apel invers pentru Android Java JsonObjectRequests. Am găsit zeci de posturi care arată cod care este aproape cuvânt cu cuvânt. Problema mea este că callbackeste nul. A se vedea cele două comentarii inline.

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

Pentru a fi clar, am o dată act de faptul că callbacknu a fost nula doar o dată când am fost de testare. Repetați se execută nu au produs un apel invers nenul de atunci. Sunt doar 8 zile , în Java, așa că te rog , iartă dacă am făcut ceva naiv.

DispatchBuddyBaseSingleton este instanced în domeniul principal de activitate doar o dată, și de DBVolleyasemenea. Toate referințele suplimentare se obține la fel prin intermediul DispatchBuddyBase.getInstance(). N - am avut probleme cu clase anonime în altă parte.

Codul Volley este oasele goale și cereri doar în afara concediază fine, JsonObjectRequest devine cu succes tot ceea ce mă aștept de la Google. Orice altceva este ridicătură de lucru, cu excepția pentru acest apel invers.

Ce trebuie să se stabilească în mod corect pentru a trece acest apel invers?

Întrebat 22/02/2018 la 09:22
sursa de către utilizator
În alte limbi...                            


1 răspunsuri

voturi
0

Ok, marcand aceasta a rezolvat. Briciul lui Occam. Am lovit involuntar ctrl-z prea mult și necomentate într-o altă secțiune de cod care a fost de asteptare cu un parametru nul literal pentru apel invers.

Codul de mai sus funcționează perfect.

Publicat 22/02/2018 la 21:29
sursa de către utilizator

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