首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在按下按钮后更改来自不同活动的ImageView可见性?

如何在按下按钮后更改来自不同活动的ImageView可见性?
EN

Stack Overflow用户
提问于 2012-10-24 11:30:38
回答 2查看 1.7K关注 0票数 2

我正在开发一个简单的android游戏,分为不同的关卡。我想要一个复选图标(ImageView)出现在级别按钮(在级别选择菜单上)旁边,当该级别完成时。按下按钮后完成一个级别,如下所示(InsideLevelActivity):

代码语言:javascript
运行
复制
    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):

代码语言:javascript
运行
复制
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就能完成这个任务(不需要为同一个绘图创建10个不同的it )?

提前谢谢你。

编辑:如果我说得不够清楚,我道歉。我认为有一些方法可以改变位于MainActivity上的图像的可见性,例如,在另一个活动的按钮内有意图的图像。感谢您的回答。

EDIT2:添加另一次尝试失败的代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-24 11:41:58

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

代码语言:javascript
运行
复制
  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);

    }

然后通过intent或get from share-preference在另一个活动中获取此图像

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2012-10-24 12:49:06

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

代码语言:javascript
运行
复制
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);

然后,您可以从下一个活动中检索此图像。

代码语言:javascript
运行
复制
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);

希望这能对你有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13042606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档