在旋转android屏幕onclick按钮而不是添加新项目,它将删除以前的itesm

时间:2017-07-01 14:01:06

标签: java android firebase firebase-realtime-database screen-orientation

确定应用程序有1个按钮onclick会将项目添加到arraylist然后再添加到firebase但是当我旋转屏幕时单击相同的按钮,而不是添加更多项目,将删除旋转屏幕之前创建的所有项目然后将再次添加项目。 这是我的按钮代码

conver_textview_to_string=new ArrayList<>();
      b.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    conver_textview_to_string.add("123");
                    for(int i=0;i<conver_textview_to_string.size();i++){
                        myRef.setValue(conver_textview_to_string);
                    }

                }
            });

谢谢

3 个答案:

答案 0 :(得分:2)

  

将此信息放入您注册活动的menifest.xml中

将MyActivity替换为您的活动名称

.data()

答案 1 :(得分:2)

在屏幕旋转时,重新创建Activity,因此为了保存以前的数据(在屏幕旋转之前),您必须将数据/值存储在onSaveInstanceState内并获取其值onRestoreInstanceState

protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putParcelableArrayList("myText", conver_textview_to_string);
    }

protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    conver_textview_to_string = savedInstanceState.getParcelableArrayList("myText");    
}

答案 2 :(得分:1)

使用默认配置时,每次旋转屏幕时都会销毁并重新创建活动。你可以做两件事:

  • 将活动状态保存在覆盖onSaveInstanceState(Bundle outState)的捆绑包中,然后使用在onCreate上作为参数传递的捆绑包或覆盖onRestoreInstanceState

  • 恢复状态
  • 在manifest.xml中为您的活动添加android:configChanges="orientation | screensize"。这使得活动不会在屏幕旋转时重新创建。