我正在尝试创建一个存储规范记录的应用程序,该规范每天通过选中列表中的复选框来完成。然后,无论何时选中该复选框,甚至在关闭该应用程序然后将其打开时,我都需要保持选中状态。
我在此站点中寻找答案,但是所有答案对我而言都不起作用。 这是我的ExamActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exam);
mDbHelper = new AppDbAdapter(this);
mDbHelper.open();
showNorms();
registerForContextMenu(getListView());
updateNormState();
}
@Override
public void onResume(){
super.onResume();
updateNormState();
}
private void updateNormState(){
for (int i = 0; i < getListView().getChildCount(); i++)
{
View v = getListView().getChildAt(i);
CheckBox norm = (CheckBox) v.findViewById(R.id.norm_checkbox);
String norm_name = (String) norm.getText();
String dateStamp = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());
Cursor norm_check = mDbHelper.updateCheckBoxes(dateStamp, norm_name);
if(norm_check.moveToFirst()){
int thisNorm = norm_check.getColumnIndex(AppDbAdapter.KEY_NORM_STATE);
int state = norm_check.getInt(thisNorm);
norm.setChecked(state > 0);
}
}
}
这是activity_exam.xml的代码
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:scrollbars="vertical" >
<ListView
android:id="@+id/android:list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
我期望当我们检查规范并关闭应用程序时,再次打开应用程序时,方法将检查在onCreate中选中的所有复选框,但在onCreate getListView方法中返回null。 但是,在onResume中,代码可以完美运行,并且只有在应用恢复后才会发生。