This is my code for my android app which isn’t complete
package com.example;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText text;
private EditText text2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text = (EditText) findViewById(R.id.editText1);
text2=(EditText)findViewById(R.id.result);
}
// This method is called at button click because we assigned the name to the
// "OnClick property" of the button
public void onClick(View view) {
switch (view.getId()) {
case R.id.button1:
RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0);
RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1);
RadioButton KelvinButton=(RadioButton) findViewById(R.id.radio2);
if (text.getText().length() == 0) {
Toast.makeText(this, "Please enter a valid number",
Toast.LENGTH_LONG).show();
return;
}
float inputValue = Float.parseFloat(text.getText().toString());
if (celsiusButton.isChecked()) {
text2.setText(String
.valueOf(convertFahrenheitToCelsius(inputValue)));
celsiusButton.setChecked(true);
} else {
text2.setText(String
.valueOf(convertCelsiusToFahrenheit(inputValue)));
fahrenheitButton.setChecked(false);
celsiusButton.setChecked(true);
if(KelvinButton.isChecked())
{
text2.setText(String.valueOf(convertoKelvin(inputValue)));
}
}
break;
case R.id.button2:
RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0);
RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1);
RadioButton KelvinButton=(RadioButton) findViewById(R.id.radio2);
float inputValue = Float.parseFloat(text.getText().toString());
if (text.getText().length() == 0) {
Toast.makeText(this, "Please enter a valid number",
Toast.LENGTH_LONG).show();
return;
}
if (fahrenheitButton.isChecked()) {
text2.setText(String
.valueOf(convertFahrenheitToCelsius(inputValue)));
celsiusButton.setChecked(true);
} else {
text2.setText(String
.valueOf(convertCelsiusToFahrenheit(inputValue)));
fahrenheitButton.setChecked(true);
if(KelvinButton.isChecked())
{
text2.setText(String.valueOf(convertoKelvin(inputValue)));
}
}
break;
case R.id.button3:
RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0);
RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1);
RadioButton KelvinButton=(RadioButton) findViewById(R.id.radio2);
float inputValue = Float.parseFloat(text.getText().toString());
if (text.getText().length() == 0) {
Toast.makeText(this, "Please enter a valid number",
Toast.LENGTH_LONG).show();
return;
}
if (KelvinButton.isChecked()) {
text2.setText(String
.valueOf(convertFahrenheitToCelsius(inputValue)));
celsiusButton.setChecked(true);
} else {
text2.setText(String
.valueOf(convertCelsiusToFahrenheit(inputValue)));
fahrenheitButton.setChecked(false);
celsiusButton.setChecked(true);
if(KelvinButton.isChecked())
{
text2.setText(String.valueOf(convertoKelvin(inputValue)));
}
}
break;
}
}
// Converts to celsius
private float convertFahrenheitToCelsius(float fahrenheit) {
return ((fahrenheit - 32) * 5 / 9);
}
// Converts to fahrenheit
private float convertCelsiusToFahrenheit(float celsius) {
return ((celsius * 9) / 5) + 32;
}
private float convertoKelvin(float celsius)
{
return ((celsius+273)) ;
}
}
As you can see i have defined my variables each time in very case.If i don’t do this i get the error “The value might not have been initialised.What am i doing wrong.
If you were wondering,My code isn’t complete.I am suck at this error and will continue once this is fixed
If I understood your question correctly If you assign values to
celsiusButton,fahrenheitButton,KelvinButtonvariables in only one case then you get error.Reason why this happens is scope of the object initialization. Below is the sample which illustrates what is happening.
So you need to define your variables before
switch (view.getId()) {And resultant declaration will look like below