getListView方法返回的Listview对象在onCreate中为null,但在onResume方法中不为null

时间:2019-03-31 13:49:24

标签: java android

我正在尝试创建一个存储规范记录的应用程序,该规范每天通过选中列表中的复选框来完成。然后,无论何时选中该复选框,甚至在关闭该应用程序然后将其打开时,我都需要保持选中状态。

我在此站点中寻找答案,但是所有答案对我而言都不起作用。 这是我的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中,代码可以完美运行,并且只有在应用恢复后才会发生。

0 个答案:

没有答案