当前位置: 首页 > 知识库问答 >
问题:

ANDROID radiogroup不保存oncheckedchangeListener

丁慈
2023-03-14

我所尝试的代码片段:

    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;
<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{
            if (didItWork){
                viewBMRSavedToast();
            }

共有1个答案

楚昊明
2023-03-14

如果我理解正确,您希望用户单击一个单选按钮,然后在用户按下“Save”时创建一个新的BreakFastLog。您目前正在做的是在单击“Save”按钮后为radiogroup制作checkChangedListener。这将导致一连串的事件以与你想要的(你所看到的)相反的顺序发生。为了让用户选择一个radiobutton,然后单击“Save”,您只需要在radiogroup中检索当前选中的radiobutton,而不是创建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);
                   .
                   .
                   .
                   .
     }

`

 类似资料:
  • 希望你能帮助我。当运行应用程序时,它正在工作,但当我再次运行时,它不工作,并且没有发现错误。我不知道为什么,但有时它起作用,但有时它不起作用。这是我的密码。。。。 公共类filldisResult扩展了AppCompative活动{ SharedPreferences SharedPreferences=getSharedPreferences(SCOREPREFERENCE,MODE_PRIVA

  • 在使用hibernate和jpa的spring mvc项目中,我有一个实体和一个实体。每个可以有许多,但每个只能有一个。如何为现有的保存新的? 我读过很多关于这个的帖子。如果我试图保存新的,就会出现无法保存分离实体的错误。但如果我试图保存现有的,则不会保存该角色。我读了这篇帖子,建议将hibernate注释移动到getter,但当我这样做时,我会收到一个引用未知属性的hibernate映射错误。这

  • 问题内容: 我有以下测试代码: println(data0)的输出为nil。 我的代码有问题吗?Swift字典是现在还是最终版本中的属性列表? 问题答案: Swift 2,Xcode 7 更新 : 如@atxe所示,NSUserDefaults词典现在映射为。这是Objective-C“轻量级泛型”的结果,它允许将Objective-C方法声明为 (默认对象必须是属性列表,尤其是字典键只能是字符串

  • 我在Android上工作。我需要保存一个没有质量损失的位图。 我使用位图的方法进行了尝试,将质量设置为100。这对我不起作用,位图失去了太多的质量。我已经测试了JPEG和PNG格式。 我已经测试过将位图复制到,然后提取,并使用保存它。在这种情况下,我无法显示用这种方式保存的图像,我只看到一个空白页。 我的问题是,有没有办法在不压缩的情况下将位图保存在SD卡中? 编辑:这里我的代码的一部分 我检测到

  • 我有一个问题,Spring数据没有保存实体。应用程序逻辑如下: 另一个应用程序正在监听负载相当重的Kafka主题(每秒数十条消息)并将消息插入数据库中具有“NEW”状态的表中。 @调度方法加载一个具有“NEW”状态的实体列表,这些实体被一个接一个地传输到FixedThreadPool(20个线程),它们的状态设置为“PROCESSING”和一个saveAll方法调用同一个表。 这两种日志方法都显示