onSaveInstanceState保存ImageButton的状态

时间:2011-10-30 06:54:26

标签: android save

我正在使用ImageButton在我的注册过程中选择用户的个人资料照片。处理纵向和横向模式之间的旋转。我想保存背景状态。

对于我正在做的EditText

的onSaveInstanceState

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

onRestoreInstanceState

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

我如何为ImageButton做同样的事情?

我正在设置像这样的ImageButton

            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);
            }

3 个答案:

答案 0 :(得分:1)

您可以保存图片的uri。 并使用

imagebutton.setImageURI(uri);

答案 1 :(得分: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);
            }

答案 2 :(得分:1)

由于您正在专门保存状态以处理轮换,因此您最好的选择是使用onRetainNonConfigurationInstance;包括在内就是为了这个目的。在Activity中重写此方法以返回图像本身(或包含它的对象):

public Object onRetainNonConfigurationInstance()
{
   return bitmapImage;
}

然后准备好再次在onCreate

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

请注意,在Honeycomb及更高版本中,您应该在片段上使用setRetainInstance(),而不是使用此方法;但是直到不早于Honeycomb的兼容性是可以接受的,这是最好的解决方案。