簡體   English   中英

活動不會刷新onCreate()中的布局

[英]Activity doesn't refresh layout in onCreate()

我基於兩個活動創建了一個登錄Facebook的應用程序,一旦登錄到第二步活動並加載了信息。 問題是,當我用Picasso加載圖像時,我只是在圖像出現之前登錄了兩次。 我將Picasso的代碼放在onCreate,onStart和onResume中,但是在第二個活動的第一次登錄時未加載圖像。 請幫助我。 這是代碼:

Picasso.with(getApplicationContext()).load(personPhotoUrl).into(avatar);

這是第二活動

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    if(Start.SignWithFacebook == true)
    {
        name.setText(FacebookLogin.NameFace);
        desc.setText(FacebookLogin.EmailFace);
        try
        {
            Picasso.with(getApplicationContext()).load("https://graph.facebook.com/" + FacebookLogin.idFacebook + "/picture?type=large").into(avatar);
        }catch(Exception e){}
    }
}

當第二個活動的呼叫開始時,這是主要活動:

        public void onClick(View v) {
        if(v.getId() == R.id.authButton) {
            if(SignWithFacebook == true)
            {
            Intent second = new Intent(this, SecondActivity.class);
            startActivity(second);
            this.finish();
            }
            else
            {
            SignWithFacebook = true;
            Intent face = new Intent(this, FacebookLogin.class);
            startActivity(face);
            }
        }

這是FacebookActivity:

    public class FacebookLogin extends Activity {
    private String TAG = "Start";
    public static String NameFace;
    public static String idFacebook;
    public static String EmailFace;
    public static CallbackManager callbackManager;
    private String id;
    private String firstName;
    private String lastName;
    private String email;
    ProfileTracker profileTracker;
    public void onCreate(Bundle savedInstanceState){
          super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        Start.mBut.setReadPermissions(Arrays.asList("public_profile", "email", "user_friends"));
        callbackManager = CallbackManager.Factory.create();
        Start.mBut.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    GraphRequest.newMeRequest(
                            loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(JSONObject user, GraphResponse response) {
                                    if (response.getError() != null) {
                                        // handle error
                                    } else {
                                        Start.SignWithFacebook = true;
                                        id = user.optString("id");
                                        firstName = user.optString("first_name");
                                        lastName = user.optString("last_name");
                                        email = user.optString("email");
                                        Log.i(TAG,"User ID "+ id);
                                        EmailFace = "" + email;
                                        Log.i(TAG,"Email "+ email);
                                        Start.text.setText("" + email);
                                        idFacebook = id;
                                    }
                                    NameFace = firstName + " " + lastName;
                                    Toast.makeText(getApplicationContext(), "Log in with " + NameFace, Toast.LENGTH_LONG).show();
                                }
                            }).executeAsync();
            }

                @Override
                public void onCancel() {
                    Start.SignWithFacebook = false;
            }

                @Override
                public void onError(FacebookException exception) {

            }
        });
}

    public void onStart() {
        super.onStart();

    }

     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
     }

     public void onResume()
     {
         super.onResume();
        finish();

     }
}

您必須Synchronously下載映像:

Bitmap imageBitmap =  Picasso.with(getApplicationContext()).load("https://graph.facebook.com/" + FacebookLogin.idFacebook + "/picture?type=large").get()

之后,您可以設置圖像:

ImageView myImageView = (ImageView) findViewById(R.id.myImageView);
myImageView.setImageBitmap(imageBitmap);

注意:您必須使用AsyncTask來做到這一點。

根據我們在評論中與OP的討論,圖像網址是錯誤的,因為FacebookLogin.idFacebooknull ,因此您首次獲取"graph.facebook.com/null/picture?type=large"作為網址

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM