Создать и проверить флажок программно с использованием Java в Android

#android #android-checkbox

#Android #android-флажок

Вопрос:

Мне нужно создать несколько флажков программно с использованием Java, проверить, установлен ли один из них, и когда я нажму кнопку Далее, элемент управления перейдет на следующую страницу. Если ни один из них не отмечен, должно отображаться всплывающее сообщение. Пожалуйста, предложите, поскольку я новичок в Android.

Вот мой код:

 public class TestValidCheckboxActivity extends Activity implements OnCheckedChangeListener{

private RelativeLayout layoutMiddle = null;
private TableLayout layout1;
private CheckBox chk;
private  String[] resarr = {"silu", "pinky", "meera"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    layoutMiddle = (RelativeLayout)findViewById(R.id.layoutMiddleUp);
    layout1 = (TableLayout)findViewById(R.id.tableId1);
    final Button btnNext = (Button)findViewById(R.id.btnNext);
    int i = 0;
        for(String res: resarr){
            TableRow tr=new TableRow(this);
                chk=new CheckBox(this);
                chk.setId(i);
                chk.setText(res);
                chk.setTextColor(Color.BLACK);
                tr.addView(chk);
                i  ;
            RelativeLayout.LayoutParams lay = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.FILL_PARENT);
            lay.addRule(RelativeLayout.BELOW, layoutMiddle.getId());
            layout1.addView(tr, lay);
        }
        chk.setOnCheckedChangeListener(new OnCheckedChangeListener()
        {
            @Override
            public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
                // TODO Auto-generated method stub
                if (arg1)
                {
                    btnNext.setOnClickListener(new View.OnClickListener() {
                        public void onClick(final View view) {
                            Log.e("1111111111","111111111");
                                if(chk.isChecked()){
                                    Intent intent = new Intent(view.getContext(),NextPage.class);
                                    startActivityForResult(intent, 0);
                                }else{
                                    Toast msg = Toast.makeText(view.getContext(), "please choose at least one option", Toast.LENGTH_LONG);
                                    msg.show();
                                }

                        }
                    });
                }else{
                    Toast msg = Toast.makeText(TestValidCheckboxActivity.this, "please choose at least one option", Toast.LENGTH_LONG);
                }
            }

        });

    }
    @Override
    public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
    // TODO Auto-generated method stub

    }
}
  

Ответ №1:

это можно легко сделать, возьмите логический флаг и установите для него значение true checkbox.isChecked(); (встроенный), затем проверьте, установлен ли флаг, затем перейдите к следующему тосту else

Ответ №2:

Можете ли вы показать нам часть своего кода макета, то есть определены ли флажки в файле xml и есть ли у них идентификаторы?

Если они это сделают, вы можете получить доступ к каждому из них findViewByID и проверить их статус один за другим.