I have some problem with radio group, I am new to Android development so I don't have much idea to how can handle it.This is form which has some input filed and radio group for choosing gender and save button. but I don't know where can I exactly put my radiogroup setoncheakchangelistener? so it gives me errors.
MAIN ACTIVITY :
package com.dietandroidproject;
import Databasedata.Person;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final RadioGroup genderselected = (RadioGroup) findViewById(R.id.selectgender);
genderselected.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup arg0, int selectedId) {
selectedId=genderselected.getCheckedRadioButtonId();
RadioButton genderchoosed = (RadioButton) findViewById(selectedId);
String gender = genderchoosed.getText().toString();
}
});
Button saveinformation = (Button) findViewById(R.id.saveinformation);
saveinformation.setOnClickListener(new View.OnClickListener() {
EditText weighttext = (EditText) findViewById(R.id.weighttext);
EditText heighttext = (EditText) findViewById(R.id.heighttext);
EditText usernametext = (EditText) findViewById(R.id.usernametext);
EditText agetext = (EditText) findViewById(R.id.agetext);
Spinner activitytext = (Spinner) findViewById(R.id.chooseactivity);
Button saveinformation = (Button) findViewById(R.id.saveinformation);
String pa = activitytext.getSelectedItem().toString();
@Override
public void onClick(View v) {
int weight = (int) Float.parseFloat(weighttext.getText()
.toString());
int height = (int) Float.parseFloat(heighttext.getText()
.toString());
String username = usernametext.getText().toString();
int age = (int) Float.parseFloat(agetext.getText().toString());
TextView genderchoosed = (TextView) findViewById(genderselected
.getCheckedRadioButtonId());
String gender = genderchoosed.getText().toString();
String pa = activitytext.getSelectedItem().toString();
//BMI==========================================================
int Bmivalue = calculateBMI(weight, height);
String bmiInterpretation = interpretBMI(Bmivalue);
float idealweight = idealweight(weight, height, gender, pa, age);
double dailycalories=dailycalories(weight,height,gender,pa,age);
//insert data in to db===================================================
Person person = new Person();
person.setUsername(username);
person.setHeight(height);
person.setWeight(weight);
person.setAge(age);
person.setGender(gender);
person.setPa(pa);
person.setBmivalue(Bmivalue);
person.setBmiInterpretation(bmiInterpretation);
person.setIdealweight(idealweight);
person.setDailycalories(dailycalories);
Databasedata.DatabaseAdapter dbAdapter = new Databasedata.DatabaseAdapter(
MainActivity.this);
dbAdapter.insertPerson(person);
Toast.makeText(getApplicationContext(),
Bmivalue + "and you are" + bmiInterpretation,
Toast.LENGTH_LONG).show();
}
});
}
//BMI FUNCTION===============================================
private int calculateBMI(int weight, int height) {
return (int) (weight / (height * height));
};
private String interpretBMI(int Bmivalue) {
if (Bmivalue < 18.5) {
return "Underweight";
} else if (Bmivalue < 25) {
return "Normal";
} else if (Bmivalue < 30) {
return "Overweight";
} else {
return "Obese";
}
}
//IDEAL WEIGHT========================================
private float idealweight(int weight, int height, String gender, String pa,
int age) {
float x = (float) 0.0;
int bmi;
bmi = idealbmi(age);
x = bmi * (height * height);
return x;
}
public int idealbmi(int age) {
int bmi = 0;
if (age > 17 && age <= 19) {
bmi = 21;
}
if (age > 19 && age <= 24) {
bmi = 22;
}
if (age > 24 && age <= 34) {
bmi = 23;
}
if (age > 34 && age <= 44) {
bmi = 24;
}
if (age > 44 && age <= 54) {
bmi = 25;
}
if (age > 54 && age <= 64) {
bmi = 26;
}
if (age > 64) {
bmi = 27;
}
return bmi;
}
//DAILY CALORIES===============================================
public double suitablepa(String pa) {
double suitablepa = 0;
if (pa.equals("Highly active")) {
suitablepa = 1.48;
}
if (pa.equals("Active")) {
suitablepa = 1.25;
}
if (pa.equals("Low activity")) {
suitablepa = 1.11;
}
if (pa.equals("Sedentary")) {
suitablepa = 1;
}
return suitablepa;
}
private double dailycalories(int weight, int height, String gender,
String pa, int age) {
double dailycalori = 0;
double i;
double j;
double h;
double k;
if(gender.equals("femaleselected")){
i=9.36*weight;
j=726*height;
h=suitablepa(pa)*(i+j);
k=6.91*age;
dailycalori=354-k+h;
}else if(gender.equals("maleselected")){
i=15.91*weight;
j=539.6*height;
h=suitablepa(pa)*(i+j);
k=9.53*age;
dailycalori=662-k+h;
}
return dailycalori;
}
}
XML CODES
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/backgroundmain"
android:orientation="vertical" >
<RelativeLayout
android:id="@+id/personinformation"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1.98" >
<EditText
android:id="@+id/heighttext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/usernametext"
android:layout_below="@+id/usernametext"
android:ems="10"
android:hint="Enter Your Height" >
</EditText>
<EditText
android:id="@+id/usernametext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:ems="10"
android:hint="Enter Username" />
<EditText
android:id="@+id/weighttext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/heighttext"
android:layout_below="@+id/heighttext"
android:ems="10"
android:hint="Enter Your Weight" />
<EditText
android:id="@+id/agetext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/weighttext"
android:layout_below="@+id/weighttext"
android:ems="10"
android:hint="Enter Your Age" >
<requestFocus />
</EditText>
</RelativeLayout>
<View
android:layout_width="250dp"
android:layout_height="1dip"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:background="#aaa" />
<RelativeLayout
android:id="@+id/choosegender"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="0.78" >
<TextView
android:id="@+id/choosefemaleormale"
android:layout_width="match_parent"
android:layout_height="30dip"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="10dip"
android:gravity="center"
android:text="Gender : "
android:textAlignment="center"
android:textColor="#555"
android:textSize="19sp" />
<RadioGroup
android:id="@+id/selectgender"
android:layout_width="220dip"
android:layout_height="wrap_content"
android:layout_below="@+id/choosefemaleormale"
android:layout_centerHorizontal="true"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/femaleselected"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_weight="1"
android:checked="true"
android:text="female"
android:onClick="onRadioButtonClicked"
/>
<RadioButton
android:id="@+id/maleselected"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="1"
android:text="male"
android:onClick="onRadioButtonClicked" />
</RadioGroup>
</RelativeLayout>
<View
android:layout_width="250dp"
android:layout_height="1dip"
android:layout_gravity="center"
android:layout_marginTop="20dp"
android:background="#aaa" />
<RelativeLayout
android:id="@+id/choosepa"
android:layout_width="250dip"
android:layout_height="0dp"
android:layout_weight="1"
android:layout_gravity="center" >
<Spinner
android:id="@+id/chooseactivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:entries="@array/activityitems"
android:gravity="center"
android:prompt="@string/level_of_activity" />
</RelativeLayout>
<Button
android:layout_width="90dp"
android:layout_height="0dp"
android:layout_gravity="right"
android:layout_marginBottom="10dip"
android:layout_marginRight="20dp"
android:layout_weight="0.46"
android:background="@drawable/recent_foods_depressed"
android:hint="save"
android:text="save"
android:textColor="#fff"
android:textSize="20sp"
android:textStyle="bold"
android:onClick="saveinformation"
android:id="@+id/saveinformation"/>
</LinearLayout>
08-03 06:22:57.169: E/AndroidRuntime(1188): java.lang.IllegalStateException: Could not find a method onRadioButtonClicked(View) in the activity class com.dietandroidproject.MainActivity for onClick handler on view class android.widget.RadioButton with id 'maleselected'
– StipendsetOnCheckedChangeListener()
for radio buttons instead of radiogroups. Or else you can also tryandroid:onClick
for your radio buttons in your xml. developer.android.com/guide/topics/ui/controls/radiobutton.html – AlliealliedsetOnCheckedChangeListener()
for radio button, and also I tried [mkyong.com/android/android-radio-buttons-example/] but no answer. – StipendString gender = genderchoosed.getText().toString();
inonCheckedChanged
so I can use it as gender type infloat idealweight = idealweight(weight, height, gender, pa, age);
and others function but I cant access gender from my function. how can I solve it? – StipendString gender;
. And in youronCheckedChanged()
just define it asgender = genderchoosed.getText().toString();
. Now you can access it. – Alliealliedgender = genderchoosed.getText().toString();
and then use it in my function.is there any way which can I solve this problem. – Stipendidealweight
method from your radiogroupsonCheckedChanged
method passing in the parameter asgender
. – AlliealliedonCheckedChanged
?? if i do as u said, when click on the button "save" becauseonclick
dosent access to variable innCheckedChanged
so cant insert them in db?right???!!! – Stipendgender
, you can do the following: You can use getter and setter methods. You have to call the setter method in youronCheckedChanged
method passing thegender
as parameter. And those who want to refer thegender
can simply call the getter methods. Please search about getter and setter methods if you dont know. – Allieallied