2016-03-28 3 views
0

FirebaseBaaSとしているアプリを開発しています。正確なfirebase参照を与えた後でも、 'バウンスに失敗しました'例外を取得しています。詳細はこちら

問題は、私が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)を取得しても、適切なfirebaseの参照を与えた後です。スタックトレースの別の注目すべき行は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)です。ここで

Firebase参照です:Firebase mFirebaseRef = new Firebase("https://appname.firebaseio.com/users");

は、ここでは、コードの私の作品です:

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

はここUsersDataFromFirebase.javaファイルのコードです:Firebaseとして

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

} 

私は、私にとって非常に新しいものですここで何がうまくいかないのか理解できません。

お知らせください。

ありがとうございます!

+0

あなたのコード内で何行MainActivity.java:119ているのですか?また、あなたのJSONのスニペットを追加します。これは、Firebaseダッシュボードの[エクスポート]ボタンをクリックすることで簡単に取得できます。 –

+0

@FrankvanPuffelen私はエラーが発生している行について言及しました。 JSONのスニペット:{ "users":{ "20fb1a2a-5658-4b36-af28-c807dc6b187a":{ "userEmail": "[email protected]"、 "userName": "Hammad Nasir" }} } ' –

+0

@FrankvanPuffelenください応える... –

答えて

0

JavaクラスにはImageViewが含まれていますが、Jackson/Firebaseはデータのシリアル化方法を知らないためです。

解決策は、Firebase/Jacksonにオブジェクトを読み取ったときにImageViewを無視してJSONに書き込むように指示することです。

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

これは、この質問に対する私の答えで覆われていることに注意してください:Why do I get "Failed to bounce to type" when I turn JSON from Firebase into Java objects?

+0

はあなたがこれをあまりにも答えてくださいすることができますhttp://stackoverflow.com/questions/36353638/unable-to-fetch-users-gmail-email-address-throughファイアベース –

関連する問題