我尝试过的代码片段:
String servng, mealname, strDate;
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId()){
case R.id.btFoodVegetableSave:
mealname = selected;
String serving = calories.getText().toString();
int i = Integer.parseInt(serving.replaceAll("[\\D]", ""));
servng = String.valueOf(i);
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
strDate = sdf.format(new Date());
if ( ( mealname.isEmpty() || servng.isEmpty() ) ){
// call for custom toast
viewErrorToast();
}
else {
boolean didItWork = true;
try{
rgMeal.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
switch( checkedId ){
case R.id.rbBreakfast:
BreakFastLog bfLog = new BreakFastLog(Bread_Dark.this);
bfLog.open();
bfLog.createEntry(mealname, servng, strDate);
bfLog.close();
break;
case R.id.rbMorningSnack:
MorningSnackLog msLog = new MorningSnackLog(Bread_Dark.this);
msLog.open();
msLog.createEntry(mealname, servng, strDate);
msLog.close();
break;
case R.id.rbLunch:
LunchLog lunchLog = new LunchLog(Bread_Dark.this);
lunchLog.open();
lunchLog.createEntry(mealname, servng, strDate);
lunchLog.close();
break;
case R.id.rbAfternoonSnack:
AfternoonSnackLog asLog = new AfternoonSnackLog(Bread_Dark.this);
asLog.open();
asLog.createEntry(mealname, servng, strDate);
asLog.close();
break;
case R.id.rbDinner:
DinnerLog dinnerLog = new DinnerLog(Bread_Dark.this);
dinnerLog.open();
dinnerLog.createEntry(mealname, servng, strDate);
dinnerLog.close();
break;
case R.id.rbEveningSnack:
EveningSnackLog esLog = new EveningSnackLog(Bread_Dark.this);
esLog.open();
esLog.createEntry(mealname, servng, strDate);
esLog.close();
break;
}
}
});
}
catch(Exception e){
didItWork = false;
viewErrorToast();
}finally{
if (didItWork){
viewBMRSavedToast();
}
}
} // end of if else statement
break;
xml布局:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="481dp"
android:background="@drawable/ihealthfirst"
android:orientation="vertical" >
<include
android:layout_width="fill_parent"
android:layout_height="match_parent"
layout="@layout/tabs_menu" />
<TextView
android:id="@+id/tvFoodVegetable"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/cabbage"
android:layout_marginLeft="15dp"
android:layout_marginTop="10dp"
android:textAppearance="?android:attr/textAppearanceLarge" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<EditText
android:id="@+id/etAmount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:text="@string/one"
android:inputType="number" >
<requestFocus android:layout_height="wrap_content" />
</EditText>
<Spinner
android:id="@+id/spFoodVegetable"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:prompt="@string/white_bread_prompt" />
</LinearLayout>
<Button
android:id="@+id/btFoodVegetableCalories"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/done"
android:layout_margin="15dp"
android:textColor="@color/darkgreen"
android:textSize="@dimen/padding_extralarge"
android:background="@drawable/btn_meal_selected" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="15dp"
android:text="@string/choosemeal"
android:textAppearance="?android:attr/textAppearanceLarge" />
<RadioGroup
android:paddingLeft="10dp"
android:id="@+id/rgSelectMeal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RadioButton
android:id="@+id/rbBreakfast"
android:layout_width="128dp"
android:layout_height="wrap_content"
android:text="@string/breakfast"
android:checked="true" />
<RadioButton
android:id="@+id/rbMorningSnack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/morningsnack" />
<RadioButton
android:id="@+id/rbLunch"
android:layout_width="128dp"
android:layout_height="wrap_content"
android:text="@string/lunch" />
<RadioButton
android:id="@+id/rbAfternoonSnack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/afternoonsnack" />
<RadioButton
android:id="@+id/rbDinner"
android:layout_width="127dp"
android:layout_height="wrap_content"
android:text="@string/dinner" />
<RadioButton
android:id="@+id/rbEveningSnack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/eveningsnack" />
</RadioGroup>
<Button
android:id="@+id/btFoodVegetableSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/save"
android:drawableLeft="@drawable/save24"
android:background="@drawable/nutrition_button_gradiant"
android:textColor="@color/white"
android:layout_gravity="center"
android:layout_marginBottom="15dp" />
</LinearLayout>
当用户从无线电组中检查并单击保存按钮时,它会转到我的FINALLY语句:
finally{
if (didItWork){
viewBMRSavedToast();
}
但是当我检查摘要(插入/保存到数据库中的记录列表)时,它没有被保存:(我在这里处理radiogroup有什么问题?
答案 0 :(得分:0)
如果我理解正确,您希望用户单击单选按钮,然后在用户按“保存”时创建新的BreakFastLog。您当前正在做的是在单击“保存”按钮后为radiogroup 创建checkChangedListener。这将导致事件链以您想要的(您所看到的)的相反顺序发生。为了让用户选择一个单选按钮,然后单击“保存”,您只需要检查放射线组中当前检查的单选按钮,而不是制作checkChangedListener。这可以通过以下方式完成:
int checkedId = rgMeal.getCheckedRadioButtonId()
switch( checkedId ){
case R.id.rbBreakfast:
BreakFastLog bfLog = new BreakFastLog(Bread_Dark.this);
bfLog.open();
bfLog.createEntry(mealname, servng, strDate);
bfLog.close();
break;
case R.id.rbMorningSnack:
MorningSnackLog msLog = new MorningSnackLog(Bread_Dark.this);
msLog.open();
msLog.createEntry(mealname, servng, strDate);
.
.
.
.
}
`