java - 为什么 else 语句没有初始化?
问题描述
我想隐藏 Some ImageButton 同时使图像描述可见。但是,如果语句没有按预期工作。
创建时:
ImageView thumbnail;
ImageButton addImage ,removeImage;
EditText description;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_write);
Log.d(TAG, "onCreate: Started");
thumbnail = findViewById(R.id.thumbnail);
addImage = findViewById(R.id.addImage);
removeImage = findViewById(R.id.removeImage);
description = findViewById(R.id.description);
setupToolbar();
setupBodyEditor();
addThumbnail();
}
添加缩略图:
private void addThumbnail() {
if ( thumbnail.getDrawable()== null)
{
addImage.setVisibility(View.VISIBLE);
removeImage.setVisibility(View.GONE);
description.setVisibility(View.GONE);
}
else
{
addImage.setVisibility(View.GONE);
removeImage.setVisibility(View.VISIBLE);
description.setVisibility(View.VISIBLE);
}
thumbnail.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
removeImage.setVisibility(View.VISIBLE);
addImage.setVisibility(View.GONE);
}
});
addImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"),5);
}
});
removeImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
thumbnail.setImageDrawable(null);
}
});
}
活动结果:
if (requestCode== 5 && resultCode == Activity.RESULT_OK && data != null && data.getData() != null)
{
try {
final Uri imageUri = data.getData();
final InputStream imageStream = getContentResolver().openInputStream(imageUri);
final Bitmap selectedImage = BitmapFactory.decodeStream(imageStream);
thumbnail.setImageBitmap(selectedImage);
} catch (FileNotFoundException e) {
e.printStackTrace();
Toast.makeText(mContext, "Something went wrong", Toast.LENGTH_LONG).show();
}
}
else if (resultCode == RESULT_CANCELED){
Toast.makeText(mContext, "No Image Selected",Toast.LENGTH_LONG).show();
}
尝试以不同的方式命名变量,但没有任何效果。
即使 Thumbnail ImageView 包含图像,它仍然显示 addImage 按钮并且描述也不可见。
解决方案
据我所知,在添加图像后(立即)不要更改按钮的可见性。只有在onCreate
调用该方法时,才会应用更改。
根据Activity Lifecylce
这个只有在你Activity
启动时才会这样做(最初或在进程被杀死之后)。
要解决您的问题,您必须触发addImage
, removeImage
&description
元素的可见性更改以及缩略图图像的设置(从您的onActivityResult
方法内部)。
推荐阅读
- ios - Firebase 调试从导出的 ipa 文件安装的应用查看实时事件
- gauge - 相同的计量步骤,不同的实现
- docusignapi - 是否可以将 Docusign API 与 IronPython 一起使用
- javascript - src文件夹中的文件更改时如何防止反应页面刷新
- node.js - 使用环回下载文件 4
- angular - ngx-card - 角度通用构建中的卡指令失败
- javascript - Draw.io 嵌入模式 - 自定义编辑链接表单
- string - 不能在字符串映射中使用基础类型的字符串:“不能使用
(类型 ) 作为地图索引中的类型字符串" - sql-server-2016 - 在 mssql 中获取当前月份的第一、第二、第三周日期,下个月是什么日期
- spartacus-storefront - 将加载新数据添加到 Store 的最佳位置是什么?ngrx/商店