如何在按下按钮后更改其他活动的ImageView可见性?

时间:2012-10-24 03:30:38

标签: android button imageview android-activity

我正在开发一个分为关卡的简单安卓游戏。我希望在该级别完成后,在级别按钮(在级别选择菜单上)旁边出现一个检查图标(ImageView)。 按下按钮后完成一个级别,如下所示(InsideLevelActivity):

    final EditText level1editText=(EditText)findViewById(R.id.level1editText);        
    Button level1completeButton=(Button)findViewById(R.id.level1completeButton);

    level1completeButton.setOnClickListener(new View.OnClickListener()
        public void onClick(View v)
        {
            final String edittext=level1editText.getText().toString();

            if(edittext.trim().equals("Complete level"))
             {   

              {
                Intent visible1 = new Intent();
                visible1.putExtra("iconvisible",0);
                startActivity(visible1);

                    {
                      LayoutInflater inflater = getLayoutInflater();
                      View view = inflater.inflate(R.layout.activity_level1completed,
                      (ViewGroup) findViewById(R.id.img11_toast));

                Toast toast = new Toast(Level1Activity.this);
                toast.setView(view);
                toast.show();

                { onBackPressed(); {

                        return;
                    }


            }   

            }
            else
            {
                    Toast.makeText(Level1Activity.this,
                    "Type Complete level.", Toast.LENGTH_LONG).show();
            }

然后返回级别选择菜单活动。我正在尝试以这种方式检索数据(LevelMenuActivity):

ImageView logocheckicon1=(ImageView)findViewById(R.id.logocheckicon1);
logocheckicon1.setVisibility(View.GONE);

Intent visible1 = getIntent();
int state = Integer.parseInt(visible1.getExtras().get("iconvisible").toString());
complete1.setVisibility(iconvisible);

过去几天我尝试了很多方法,包括this one (how to pass data between two activities)。我甚至试图使检查图标(ImageView)不可见,并再次显示this way

此外,每个已完成级别旁边都会显示相同的检查图标。是否可以仅使用一个ImageView来完成此操作(不创建相同drawable的10个不同ID)?

提前谢谢。

编辑: 如果我不够清楚,我道歉。我认为有一些方法可以改变位于MainActivity上的图像的可见性,并在另一个活动的按钮内部使用intent。 谢谢你的回答。

EDIT2:添加了另一个不成功尝试的代码。

2 个答案:

答案 0 :(得分:1)

将图像从一个活动传递到另一个活动。首先将图像转换为位图,然后将base64转换为字符串,然后通过意图传递或保存共享偏好。

  public boolean saveImage(Context context, Bitmap realImage) {

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
         realImage.compress(Bitmap.CompressFormat.JPEG, 100, baos);   
         byte[] b = baos.toByteArray(); 

        String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);

    }

然后通过意图将此图像带入另一项活动或从共享偏好中获取

public Bitmap getFacebookImageBitmap(Context context)
{
     Bitmap bitmap = null;

     String saveimage=from intent or share-preference string.
     if( !saveimage.equalsIgnoreCase("") ){
            byte[] b = Base64.decode(saveimage, Base64.DEFAULT);
             bitmap = BitmapFactory.decodeByteArray(b, 0, b.length);

        }
    return bitmap;
}

谢谢

答案 1 :(得分:1)

您可以通过意图传递图像。首先将图像转换为字节数组,然后将其与意图一起发送。

Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);     
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos); 
byte[] b = baos.toByteArray();

Intent intent = new Intent(this, ActivityB.class);
intent.putExtra("picture", b);
startActivity(intent);

然后你可以从下一个活动中检索这个图像。

Bundle extras = getIntent().getExtras();
byte[] b = extras.getByteArray("picture");

Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length);
ImageView image = (ImageView) findViewById(R.id.imageView1);

image.setImageBitmap(bmp);

希望这会对你有所帮助。