2016-08-29 12 views
0

メールを受け取るためのFaceBookリクエストを呼び出した後、TextViewuserEmailにテキストを設定しようとしています。Face Bookリクエスト後にUIが更新されない理由は何ですか?

public TextView userEmail; 

      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_my_profile); 


       //user_profile_name 
       userName = (TextView)findViewById(R.id.user_profile_name); 
       userEmail = (TextView)findViewById(R.id.user_profile_short_bio); 
       userbday = (TextView) findViewById(R.id.user_bday); 
     getMyFBProfileRequest(); 
    } 


    public void getMyFBProfileRequest() { 
     GraphRequest request = GraphRequest.newMeRequest(
       AccessToken.getCurrentAccessToken(), 
       new GraphRequest.GraphJSONObjectCallback() { 
        @Override 
        public void onCompleted(JSONObject object, GraphResponse response) { 
         // Application code 
         try { 
          Log.i("Response",response.toString()); 
          Toast.makeText(MyProfileActivity.this,object.getString("email") , 
           Toast.LENGTH_SHORT).show(); 

          // Application code 
          String email = object.getString("email"); 
          String birthday = object.getString("birthday"); 


          userEmail.setText(email); 



         } catch (JSONException e) { 
          e.printStackTrace(); 
          Log.i("Error",""); 
          //profileView.showToast("Error"); 
         } 
        } 
       }); 

     // GraphRequest.GraphJSONObjectCallback objectCallback = new JSONObjectCallback(); 
     // GraphRequest request = GraphRequest.newMeRequest(accessToken, objectCallback); 
     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "email,name,first_name,last_name,gender"); 
     request.setParameters(parameters); 
     request.executeAsync(); 

    } 

そして、私はトーストで見ると良い応答を得ます。 textViewでは何も変わりません。 UIは更新されません...なぜですか?私は何をすべきかわかりません。私は放送受信機を使用しました。多くの時間を失った。それは動作しません...誰も助けてください、助けてください。

+0

プライベートまたはこれのどれもUSEREMAIL公開/ですか? –

+0

userEmailは一般公開されています。 – nnnn

+1

ログを確認しましたか?誕生日の取得に例外が発生することがあります。あなたは "String birthday ..."という行をコメントできますか? –

答えて

0

FB回答にフィールド「誕生日」があります!しかし、私の要求は誕生日を迎えませんでした。トライキャッチJSONObjectを持つすべての操作を囲むように( "フィールド"、 "誕生日")

params.putString("fields","email,birthday,picture.type(large)"); 
)params.putString:で "

   try { 
        userModel.setEmail(data.getString("email")); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
        userModel.setEmail(""); 
       } 

       try { 
        userModel.setBday(data.getString("birthday")); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
        userModel.setBday(""); 
       } 

と設定を"それを得るための正しいです結果がNULLの場合はcath if

だから、今、私の要求は次のようになります。

Bundle params = new Bundle(); 
     params.putString("fields", "email,birthday,picture.type(large)"); 

     new GraphRequest(AccessToken.getCurrentAccessToken(), "/me/", params,  HttpMethod.GET, 
        new GraphRequest.Callback() { 
         public ImageLoader imageLoader; 
         public ImageView mImageView; 
         public UserInfo userModel; 

         @Override 
         public void onCompleted(GraphResponse response) { 

           saveDataInSingletone(response); 
           profileView.setInfoToView(); 

         } 

         private void saveDataInSingletone(GraphResponse response) { 
          JSONObject data = response.getJSONObject(); 
          userModel = UserInfo.getInstance(); 
          String lastName, firstName; 
          String profilePicUrl; 


          if (data.has("picture")) { 
           try { 
            profilePicUrl = data.getJSONObject("picture").getJSONObject("data").getString("url"); 
            // getFacebookProfilePicture(profilePicUrl); 

            // imageView = (ImageView) findViewById(R.id.pic); 
            // imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
            userModel.setAvatar(profilePicUrl); 
            //mImageView.setImageBitmap(profilePic); 
            // userModel.setAvatar(profilePic); 
           } catch (JSONException e) { 
            e.printStackTrace(); 
           } 
          } 

        try { 
          userModel.setEmail(data.getString("email")); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
          userModel.setEmail(""); 
         } 

         try { 
          userModel.setBday(data.getString("birthday")); 
         } catch (JSONException e) { 
          e.printStackTrace(); 
          userModel.setBday(""); 
         }}).executeAsync(); 
関連する問題