int变量不会随屏幕旋转一起保存

时间:2017-12-14 21:49:20

标签: android variables screen-rotation

我将一个imageview加载到一个url的图像,当我点击一个按钮时,它会传递到下一个url,从而改变图像。 问题是,当我旋转屏幕时,它返回到显示的第一个图像。 我尝试使用增量计数器执行if但它删除变量并再次返回第一个。 有人知道如何保存“下一个”变量的值,所以当屏幕旋转时,它会保存值,或者知道另一种保存最后一个图像的方法。 api picasso

代码完成

private SmartImageView smartImage;

private Button btn;
private int proxima = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_redacao_nota_1000);

     if (proxima == 0) {
         smartImage = (SmartImageView) findViewById(R.id.meuSmartImage);
         smartImage.setImageUrl("http://gabrielmartins70.000webhostapp.com/bao.png");
         proxima++;

     }

    btn = (Button) findViewById(R.id.button18);
    btn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if (proxima == 1) {
                smartImage.setImageUrl("http://gabrielmartins70.000webhostapp.com/2.png");
            }
        }
    });


}}

1 个答案:

答案 0 :(得分:1)

在先前销毁活动后重新创建活动时,您可以从系统通过活动的Bundle中恢复已保存的状态。 onCreate()和onRestoreInstanceState()回调方法都接收包含实例状态信息的相同Bundle。

因为无论系统是创建活动的新实例还是重新创建前一个实例,都会调用onCreate()方法,因此在尝试读取之前必须检查状态Bundle是否为null。如果它为null,则系统正在创建活动的新实例,而不是恢复之前被销毁的实例。

保存你的int变量,如下例所示:



select t.*,
       ((case when flag1 = 'Y' then 1 else 0 end) +
        (case when flag2 = 'Y' then 1 else 0 end) +
        (case when flag3 = 'Y' then 1 else 0 end) +
        (case when flag4 = 'Y' then 1 else 0 end) +
        (case when flag5 = 'Y' then 1 else 0 end)
       ) as num_ys
from t;