在我的Android活动中,我使用两个不同的数组。首先,我声明它们,然后在onCreate()
方法中,我实例化它们。但是,当我填充它们然后更改方向时,它们会再次被实例化,并且数据会丢失。
public class MainActivity extends Activity {
private JSONArray first;
private JSONArray second;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
interestedSections = new JSONArray();
productsBought = new JSONArray();
}
//...
}
我在初始化数组之前尝试添加if (savedInstanceState != null)
,以便仅首次初始化它们,但是当我更改方向时,它们是null
。为了在整个应用程序生命周期中将数据保存在数组中,我该怎么办?
答案 0 :(得分:1)
检查此答案,因为旋转屏幕时会调用onCreate: Activity restart on rotation Android
编辑:如果你想要一个快速而又脏的方法来使它工作,只需要一个静态初始化的布尔值并将其设置为true onCreate。如果initialized为true,则不要将数组设置为新数组。
答案 1 :(得分:0)
我必须将数组声明为static
,而在onCreate()
方法中,我只是第一次初始化它们:
公共类MainActivity扩展了Activity {
private static JSONArray first;
private static JSONArray second;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if (savedInstanceState == null) {
first = new JSONArray();
second = new JSONArray();
}
}
//...
}
答案 2 :(得分:0)
请参阅onSaveInstanceState(),这是您应该将阵列保存到捆绑包的位置。
顺便说一句,Android有时可以杀死进程并在以后恢复活动;静态变量不会存在。