2011-10-30 17 views
0

ImageButtonを使用して、サインアッププロセスでユーザーのプロフィール写真を選択しています。ポートレートモードとランドスケープモードの間の回転を処理します。私は背景の状態を保存したい。 EditTextのためにonSaveInstanceState ImageButtonの保存状態

私はのImageButtonのために同じことを行うことができますどのように

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

onRestoreInstanceState

この

onSaveInstanceState

EditText FirstName = (EditText) findViewById(R.id.FirstName); 
String firstName = FirstName.getText().toString(); 
savedInstanceState.putString("FirstName", 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()を使用する必要があります。ハニカムよりも前の互換性が許容されるまで、これが最善の解決策です。

+0

私はジンジャーブレッドを使用しています..これは動作しますか? –

+1

確かに!ハニカムでも動作します。 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

関連する問題