2016-03-28 6 views
0

Ich entwickle eine App, die Firebase als BaaS verwendet.Die 'Fehlgeschlagene Eingabe kann nicht getippt werden, selbst nachdem die genaue Basisreferenz angegeben wurde. Bitte sehen Sie Details

Das Problem ist, dass ich immer com.firebase.client.FirebaseException: Failed to bounce to type at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:183) at com.abc.xyz.MainActivity$2.onDataChange(MainActivity.java:119) auch nach der richtigen Feuerbasis Quelle angeben. Eine weitere bemerkenswerte Zeile im Stacktrace ist Caused by: com.fasterxml.jackson.databind.JsonMappingException: Conflicting setter definitions for property "colorFilter": android.widget.ImageView#setColorFilter(1 params) vs android.widget.ImageView#setColorFilter(1 params).

Hier Firebase Referenz: Firebase mFirebaseRef = new Firebase("https://appname.firebaseio.com/users");

Hier ist mein Stück Code:

mFirebaseRef.addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot snapshot) { 
         System.out.println("There are " + snapshot.getChildrenCount() + " blog posts"); 
         for (DataSnapshot postSnapshot : snapshot.getChildren()) { 
    //error on this line 
UsersDataFromFirebase post = postSnapshot.getValue(UsersDataFromFirebase.class); 

          View nameView = navigationView.getHeaderView(0); 
          userName = (TextView) nameView.findViewById(R.id.userName); 
          userName.setText(post.getUserName()); 

          System.out.println(post.getUserName()); 
          System.out.println(post.getUserEmail()); 

    //      View emailView = navigationView.getHeaderView(0); 
    //      userEmail = (TextView) emailView.findViewById(R.id.userEmail); 
    //      userEmail.setText(); 

          userImageUrl = (URL) authData.getProviderData().get("profileImageUrl"); 

          String userImageUrlString = userImageUrl.toString(); 

          URL url = null; 
          try { 
           url = new URL(userImageUrlString); 
          } catch (MalformedURLException e) { 
           e.printStackTrace(); 
          } 
          try { 
           image = BitmapFactory.decodeStream(url.openConnection().getInputStream()); 
          } catch (IOException e) { 
           e.printStackTrace(); 
          } 

          View imageView = navigationView.getHeaderView(0); 
          userImage = (ImageView) imageView.findViewById(R.id.userImage); 
          userImage.setImageBitmap(image); 

         } 
        } 

        @Override 
        public void onCancelled(FirebaseError firebaseError) { 
         System.out.println("The read failed: " + firebaseError.getMessage()); 
         Toast.makeText(getBaseContext(), firebaseError.getMessage(), Toast.LENGTH_LONG).show(); 
        } 
       }); 

      } else { 
       android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(MainActivity.this); 
       builder.setTitle("No internet connection!"); 
       builder.setMessage("Please connect to the internet."); 
       builder.setPositiveButton("Open Settings", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         Intent intent = new Intent(Settings.ACTION_SETTINGS); 
         startActivity(intent); 
         //progressBar.setVisibility(View.INVISIBLE); 
        } 
       }); 
       builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialogInterface, int i) { 
         //progressBar.setVisibility(View.INVISIBLE); 
        } 
       }); 
       builder.show(); 
      } 

Hier UsersDataFromFirebase.java Code der Datei:

public class UsersDataFromFirebase { 
    private String userName; 
    private String userEmail; 
    private ImageView userImage; 

    public UsersDataFromFirebase() { 
     // empty default constructor, necessary for Firebase to be able to deserialize blog posts 
    } 

    public String getUserName() { 
     return userName; 
    } 

    public String getUserEmail() { 
     return userEmail; 
    } 

    public ImageView getUserImage() { 
     return userImage; 
    } 

} 

Als Firebase etwas ganz Neues für mich, ich bin unfähig herauszufinden, was hier falsch läuft.

Bitte lassen Sie es mich wissen.

Vielen Dank im Voraus!

+0

Welche Zeile im Code ist MainActivity.java:119? Außerdem: Fügen Sie ein Snippet Ihres JSON hinzu, das Sie einfach erhalten, indem Sie in Ihrem Firebase-Dashboard auf die Schaltfläche "Exportieren" klicken. –

+0

@FrankvanPuffelen Ich habe die Zeile erwähnt, auf der ich den Fehler bekomme. Snippet von JSON: '{ "Benutzer": { "20fb1a2a-5658-4b36-Aeroflo28-c807dc6b187a": { "Useremail": "[email protected]", "username": "Hammad Nasir" } } } ' –

+0

@FrankvanPuffelen bitte antworten ... –

Antwort

0

Sie haben eine Image in Ihrer Java-Klasse enthalten sind, die Jackson/Firebase nicht weiß, wie man Daten serialisiert werden.

Die Lösung ist Firebase/Jackson zu sagen, das Image zu ignorieren, wenn sie das Objekt aus/schreibt sie in JSON lesen.

public class UsersDataFromFirebase { 
    private String userName; 
    private String userEmail; 
    private ImageView userImage; 

    public UsersDataFromFirebase() { 
     // empty default constructor, necessary for Firebase to be able to deserialize blog posts 
    } 

    public String getUserName() { return userName; } 

    public String getUserEmail() { return userEmail; } 

    @JsonIgnore  
    public ImageView getUserImage() { return userImage; } 
} 

Beachten Sie, dass dies in meiner Antwort auf diese Frage fällt: Why do I get "Failed to bounce to type" when I turn JSON from Firebase into Java objects?

+0

können Sie bitte auch dies beantworten: http://stackoverflow.com/questions/36353638/unable-to-fetch-users-gmail-email-address-through -Feuerbasis –

Verwandte Themen