2016-11-27 5 views
0

Это моя активность 1Как передать изображение пользователя (сгружен из Facebook профиля) от навигационной панели к другой деятельности

final Intent ridesameIntent = new Intent(this, Activity2.class); 
    TextView userText = (TextView) findViewById(R.id.username); 
    ImageView userImage = (ImageView) findViewById(R.id.profile_pic); 
    String userNameMessage = userText.getText().toString(); 
    String userPicMessage = userImage.toString(); 
    ridesameIntent.putExtra(EXTRA_MESSAGE_USERNAME,userNameMessage); 
    ridesameIntent.putExtra(EXTRA_MESSAGE_USERPIC,userPicMessage); 
    startActivity(ridesameIntent); 

Это активность 2

Intent userDetail = getIntent(); 
    String userPicMessage = userDetail.getStringExtra(Activity1.EXTRA_MESSAGE_USERPIC); 
    String userNameMessage = userDetail.getStringExtra(Activity1.EXTRA_MESSAGE_USERNAME); 
    TextView userdetail1 = (TextView) findViewById(R.id.username_scroll); 
    ImageView userdetail2 = (ImageView) findViewById(R.id.profile_pic_scroll); 
    userdetail1.setText(userNameMessage); 
    userdetail2.setImageURI(Uri.parse(userPicMessage)); 

Я попытался прохождения Ури, но при получении ответов с кодом pic также для получения справки. Вот код, который извлекает профиль пользователя из Facebook и устанавливает его в навигационную панель мероприятия 1

public void setUserProfile(String jsondata) { 

    try { 
     response = new JSONObject(jsondata); 
     user_email.setText(response.get("email").toString()); 
     user_name.setText(response.get("name").toString()); 
     profile_pic_data = new JSONObject(response.get("picture").toString()); 
     profile_pic_url = new JSONObject(profile_pic_data.getString("data")); 

     Picasso.with(this).load(profile_pic_url.getString("url")) 
       .into(user_picture); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Поэтому, пожалуйста, предложить мне, как я могу получить изображение в деятельности 2.

ответ

0

profile_pic_url.getString("url") экстракт это значение в переменную и передать его в ваши намерения дополнительные, а затем загрузить его с Пикассо в вашей второй деятельности, как в вашем setUserProfile метод.

EDIT. Итак, в вашем методе setUserProfile(String jsondata) в этой строке Picasso.with(this).load(profile_pic_url.getString("url")).into(user_picture); в вашем методе load() вы извлекаете строку url из JSONObject, вызывая profile_pic_url.getString("url"). Вы можете создать поле из этого заявления через Правый клик -> Рефакторинг -> Extract -> поле ... А потом позвонить положить его в качестве дополнительного к вашему намерению по телефону ridesameIntent.putExtra(EXTRA_MESSAGE_USERPIC, fieldNameThatYouExtracted);

Тогда в вашем втором вызове активности Picasso.with(this).load(userPicMessage).into(userPicMessage); вместо userdetail2.setImageURI(Uri.parse(userPicMessage));

После этого вы можете узнать, как упростить JSon десериализацию с использованием библиотеки GSON Leveraging the Gson Library

+0

Не могли бы вы объяснить это с помощью кода выше? – Shubhendra

+0

Я пробовал выше, но он не работает, никакой другой альтернативы? – Shubhendra

+0

какая ошибка у вас получается? –

0

вы можете передать растровое изображение через намерение второй деятельность, как он реализует Parcelable интерфейса.

Bitmap profileBitmap = ((BitmapDrawable)user_picture.getDrawable()).getBitmap(); 
ridesameIntent.putExtra("profilePic", profileBitmap); 

А на другом конце:

Intent intent = getIntent(); 
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("profilePic"); 
+0

Это действительно полезно, но что, если я хочу отправить URL-адрес изображения в базу данных json, а затем на более позднем этапе получить его с помощью picasso.Then, этот материал Bitmap не поможет. – Shubhendra

1

Здравствуйте, это мой код, с помощью которого я избавиться от этой проблемы

В первой деятельности

Profile profile = Profile.getCurrentProfile(); 
        Bundle mBundle = new Bundle(); 
          mBundle.putParcelable("pic", profile); 
        Intent loginint = new Intent(MainActivity.this,DashBoard.class); 
        loginint.putExtra("email",email); 
        loginint.putExtras(mBundle); 

        startActivity(loginint); 
        finish(); 

а во второй Деятельность, в которой вы хотите показать, что изображение

Intent intent = getIntent(); 
    Bundle mBundle =intent.getExtras(); 
    Profile profile; 

    if (mBundle != null) { 
     profile = (Profile) mBundle.getParcelable("pic"); 
    } else { 
     profile = Profile.getCurrentProfile(); 
    } 

    Picasso.with(DashBoard.this) 
      .load(profile.getProfilePictureUri(400, 400).toString()) 
      .into(mfbimage); 

здесь mfbimage является объектом ImageView, где вы хотите показать это изображение профиля.