У меня есть вид EditText и checkBox (скрыть) и два radioButtons (скрыть и показать). Функция кнопок и флажка - это скрыть или показать хинтто EditView. Я предполагаю, что первый вопрос заключается в том, почему я хотел бы сделать это в первую очередь. Ну, я совершенно новичок в андроиде, и я просто пробую разные вещи.Использование переключателей и флажков для аналогичной задачи (Android)
Когда я запускаю код, действие не запускается. Я тестировал программу, прежде чем я даже разместил какие-либо переключатели, и она отлично работала только с флажком в программе. Поэтому я предполагаю, что проблема лежит где-то с радиокнопками или комбинацией обоих, используемых для одной и той же задачи.
вот мой код:
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
public class EmPubLiteActivity extends Activity implements
CompoundButton.OnCheckedChangeListener {
CheckBox cb;
EditText et;
RadioButton rbHide;
RadioButton rbShow;
RadioGroup rg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
cb = (CheckBox)findViewById(R.id.cbHideHint);
cb.setOnCheckedChangeListener(this);
et = (EditText)findViewById(R.id.editText1);
rbHide = (RadioButton)findViewById(R.id.rbHide);
rbShow = (RadioButton)findViewById(R.id.rbShow);
RadioGroup rg = new RadioGroup(this);
rg.addView(rbHide);
rg.addView(rbShow);
rbHide.setOnCheckedChangeListener(this);
rbShow.setOnCheckedChangeListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.em_pub_lite, menu);
return true;
}
@Override
public void onCheckedChanged(CompoundButton view, boolean isChecked) {
switch (view.getId()) {
case R.id.cbHideHint:
if (isChecked) {
et.setHint(R.string.nothing);
rbHide.setChecked(true);
}
else {
et.setHint(R.string.text_here);
rbShow.setChecked(true);
}
break;
case R.id.rbHide:
et.setHint(R.string.nothing);
cb.setChecked(false);
break;
case R.id.rbShow:
et.setHint(R.string.text_here);
cb.setChecked(true);
}
}
}
Я получаю следующее сообщение об ошибке, вместе с кучей других, но у меня есть чувство, что это где проблема:
java.lang.IllegalStateException: the specified child already has a parent.
You must call removeView() on the child's parent first.
Что эта ошибка означает, и как я могу ее исправить?
, но если вы уже объявили радиокнопку в xml-файле, то почему вы снова добавляете ее динамически ??? – Piyush
@Piyush Gupta: да, в значительной степени решена проблема –