2011-10-30 3 views
0

ImageButton을 사용하여 가입 프로세스에서 사용자의 프로필 사진을 선택하고 있습니다. 세로 모드와 가로 모드 간의 회전을 처리합니다. 나는 배경의 상태를 저장하고 싶다. 글고 치기 위해 onSaveInstanceState ImageButton 상태 저장

는 내가 뭐하는 거지이

onSaveInstanceState

EditText FirstName = (EditText) findViewById(R.id.FirstName); 
String firstName = FirstName.getText().toString(); 
savedInstanceState.putString("FirstName", firstName); 

onRestoreInstanceState 내가하여 ImageButton에 대해 동일한 할 수있는 방법

String firstName = savedInstanceState.getString("FirstName"); 
    if (firstName != null) { 
     EditText FirstName = (EditText) findViewById(R.id.FirstName); 
     FirstName.setText(firstName); 
    } 

?

나는 이미지의 uri을 절약 할 수 있습니다이

  Uri selectedImageUri = data.getData(); 

      // MEDIA GALLERY 
      selectedImagePath = getPhotoPath(selectedImageUri); 

      // OI FILE Manager 
      filemanagerstring = selectedImageUri.getPath(); 

      // NOW WE HAVE OUR WANTED STRING 
      if (selectedImagePath != null) { 
       SelectedPhoto = BitmapFactory.decodeFile(selectedImagePath); 
       DisplayPhoto.setImageBitmap(SelectedPhoto); 
       String bans = DisplayPhoto.getBackground().toString(); 
       Log.i("Bakasura", bans); 
      } else{ 
       SelectedPhoto = BitmapFactory.decodeFile(filemanagerstring); 
       DisplayPhoto.setImageBitmap(SelectedPhoto); 
      } 

답변

1

, 당신의 최선의 선택은 여기 onRetainNonConfigurationInstance를 사용하는 것입니다; 그러한 목적을 위해 포함되었습니다. 이미지 자체 (또는 그것을 포함하는 객체)를 리턴 할 활성이 메소드를 재정의

public Object onRetainNonConfigurationInstance() 
{ 
    return bitmapImage; 
} 

이어서 onCreate에서 다시 수신 할 준비 :

Object last = getLastNonConfigurationInstance(); 
if(last != null) 
{ 
    DisplayPhoto.setImageBitmap((Bitmap) last); 
} 

참고 벌집과 나중에 이 메서드를 사용하는 대신 단편에 setRetainInstance()을 사용해야합니다. 그러나 Honeycomb보다 이전 버전과의 호환성이 허용 될 때까지는 이것이 최선의 해결책입니다.

+0

나는 진저 빵을 사용하고 있습니다. 이것이 효과가 있습니까? –

+1

틀림없이! 그것은 Honeycomb에서도 잘 작동합니다. API에는 사용 중지 예정인 참고 사항이 있습니다. 즉, Ice Cream Sandwich가 중단되면 곧 중단 될 수 있음을 의미합니다 (단, – Greyson

1

같이하여 ImageButton을 설정하고있다. 및

imagebutton.setImageURI(uri); 
1

당신이 =
예와 문자열을 확인 어차피 사용합니다. 당신이 회전을 처리하기 위해 특별히 상태를 저장하고 있기 때문에

Uri selectedImageUri = data.getData(); 
String selectedImagePath =""; 
selectedImagePath = getPhotoPath(selectedImageUri); 

      if (!selectedImagePath.equalsIgnoreCase("")) { 
       SelectedPhoto = BitmapFactory.decodeFile(selectedImagePath); 
       DisplayPhoto.setImageBitmap(SelectedPhoto); 
       String bans = DisplayPhoto.getBackground().toString(); 
       Log.i("Bakasura", bans); 
      } else{ 
       SelectedPhoto = BitmapFactory.decodeFile(filemanagerstring); 
       DisplayPhoto.setImageBitmap(SelectedPhoto); 
      } 
+1

재즈, 올바르지 않습니다. 문자열은 다른 것과 마찬가지로 객체이며 'null'과 비교하면 빈 문자열을 검사하는 것과 동일하지 않습니다. 또한'selectedImagePath == null'이'true' 인 경우 위의 코드는'NullPointerException'으로 실패합니다. 하샤는 그러지 않을거야. – Greyson