我正在使用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);
}
答案 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的兼容性是可以接受的,这是最好的解决方案。