首页 > 解决方案 > 将 ImageView 静态保存在活动中

问题描述

在我的代码中,我有 2 个活动,第一个是“telaInicial”(作为菜单工作的导航抽屉),当我单击“criarAnalise”时,它会转到另一个名为“Analise”的活动,在 Analise 活动中我有 4 个空白图像,当用户按下某个按钮时,image1 或 2 或 3 或 4 将其更改为另一个。

我还有一个使用“finish()”的按钮,因此用户可以返回到第一个活动。即使在关闭活动“分析”后,我也想做一些事情来保存图像,所以如果用户再次进入这个活动,他选择的图像将在那里,而不是空白。

分析活动:

 public boolean onNavigationItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.reator1) {
        fotoequipamento=R.drawable.reatorcomaquecimento;
        Toast.makeText(Analise.this,"Equipamento adicionado com sucesso.", Toast.LENGTH_SHORT).show();
      enviarImg1();

    } else if (id == R.id.reator2) {
       fotoequipamento=R.drawable.reatorfluidizado;
        Toast.makeText(Analise.this,"Equipamento adicionado com sucesso.", Toast.LENGTH_SHORT).show();
        enviarImg1();
    } else if (id == R.id.tanque1) {
        fotoequipamento=R.drawable.tanquecilindrico;
        Toast.makeText(Analise.this,"Equipamento adicionado com sucesso.", Toast.LENGTH_SHORT).show();
        enviarImg1();
    } else if (id == R.id.tanque2) {
        fotoequipamento=R.drawable.tanqueesferico;
        Toast.makeText(Analise.this,"Equipamento adicionado com sucesso.", Toast.LENGTH_SHORT).show();
        enviarImg1();
    } else if (id == R.id.caminhao) {
        fotoequipamento=R.drawable.caminhaotransp;
        Toast.makeText(Analise.this,"Equipamento adicionado com sucesso.", Toast.LENGTH_SHORT).show();
        enviarImg1();
    } else if (id == R.id.voltar) {
       finish();

    }

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawer.closeDrawer(GravityCompat.START);
    return true;
}
 public void enviarImg1{


    //HERE THE USER WILL CHOOSE WHAT PICTURE HE WANTS TO PLACE WHERE
    if ((int) equipamento1.getTag() == R.drawable.branco) {
        equipamento1.setImageResource(fotoequipamento);
        equipamento1.setTag(fotoequipamento);
        botaoapagar1.setVisibility(View.VISIBLE);}

        else if ((int) equipamento2.getTag() == R.drawable.branco) {
        equipamento2.setImageResource(fotoequipamento);
        setapreta1.setVisibility(View.VISIBLE);
        equipamento2.setTag(fotoequipamento);
        botaoapagar2.setVisibility(View.VISIBLE);}

    else if ((int) equipamento3.getTag() == R.drawable.branco) {
        equipamento3.setImageResource(fotoequipamento);
        setapreta2.setVisibility(View.VISIBLE);
        equipamento3.setTag(fotoequipamento);
        botaoapagar3.setVisibility(View.VISIBLE);}
    else if ((int) equipamento4.getTag() == R.drawable.branco) {
        equipamento4.setImageResource(fotoequipamento);
        setapreta3.setVisibility(View.VISIBLE);
        equipamento4.setTag(fotoequipamento);
        botaoapagar4.setVisibility(View.VISIBLE);} else {Toast.makeText(Analise.this,"Espaço indisponível no diagrama.", Toast.LENGTH_SHORT).show();} }

    }

我尝试使用 saveinstance,但我不知道如何。

标签: androidandroid-activityimageviewonsaveinstancestate

解决方案


您可以将用户选择的所有图像保存在 mainActivity 或应用程序类变量等全局变量中,或者使用众所周知sharedpreference的存储数据以供以后使用,即使在一段时间或几天后重新启动应用程序后也是如此。您可以从中恢复选定的图像sharedpreference

另一方面,全局变量mainActivity或应用程序类变量将存储数据,直到应用程序关闭。当应用程序关闭或被其他应用程序或操作系统杀死时,您将丢失数据。


推荐阅读