首页 > 解决方案 > 为什么 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 按钮并且描述也不可见。

标签: javaandroid-studioif-statement

解决方案


据我所知,在添加图像后(立即)不要更改按钮的可见性。只有在onCreate调用该方法时,才会应用更改。

根据Activity Lifecylce这个只有在你Activity启动时才会这样做(最初或在进程被杀死之后)。

要解决您的问题,您必须触发addImage, removeImage&description元素的可见性更改以及缩略图图像的设置(从您的onActivityResult方法内部)。


推荐阅读