我在我的onCreate()
方法中动态添加了复选框。当其中一个或多个被选中时,我希望显示两个按钮。我是使用 Android 的新手,但据我所知,以与添加复选框相同的方法进行此检查(查看是否选中复选框)是行不通的,即onCreate()
,因为找不到它们,即尚未创建?如果是这种情况,我应该用什么方法进行检查?我想在活动启动时添加复选框并检查是否一直选中这些框。
复选框被添加到displayEntries(db)
.
这是我的 onCreate():
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DatabaseHandler db = new DatabaseHandler(this);
displayEntries(db);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent(MainActivity.this, AddActivity.class); //FromActivity.this
startActivity(i);
}
});
checkChecked();
}
检查检查():
public void checkChecked() {
//Check whether items have been checked
TableLayout tl = (TableLayout) findViewById(R.id.entry_table);
for (int i = 0; i < tl.getChildCount(); i++) {
View child = tl.getChildAt(i);
if (child instanceof CheckBox) {
CheckBox checkBoxChild = (CheckBox) child;
Log.d("Checkbox", "Checkbox is found");
if (checkBoxChild.isChecked()) {
Log.d("Checkbox", "working!");
Button button1 = (Button) findViewById(R.id.button_edit);
button1.setVisibility(View.INVISIBLE);
Button button2 = (Button) findViewById(R.id.button_delete);
button2.setVisibility(View.INVISIBLE);
}
}
}
}
(目前我正在尝试使按钮不可见,如您在上面看到的那样,因为我不想在布局文件中“硬编码”它们应该不可见的开始 - 认为这可能无法更改?但那是后来的问题......)
编辑:我意识到我的错误是认为我的 TableLayout 的孩子所在的复选框。它们实际上是 TableLayout 中行的子代。现在我设法找到了实际的复选框,我可以通过在创建按钮时将它们设置为不可见并在单击时显示按钮来使它们消失。剩下的问题是,即使再次取消选中所有按钮,按钮当然也会保持可见。关于如何根据是否选中任何复选框来打开和关闭按钮的任何想法?