Reputation: 21
I'm getting the following Error:
java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText at com.example.bmicalculator.MainActivity.initializeApp(MainActivity.java.32)
public class MainActivity extends Activity {
private EditText heightIn;
private EditText weightIn;
private Button CalculateButton;
private double weight =0;
private double height =0;
private TextView BmiResult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initializeApp();
}
private void initializeApp() {
heightIn = (EditText) findViewById (R.id.HeightInput1);
weightIn = (EditText) findViewById (R.id.WeightInput1);
CalculateButton = (Button) findViewById (R.id.CalculateButton);
BmiResult = (TextView) findViewById (R.id.BmiResult);
}
public void calculateBMI(View v) {
weight = Double.parseDouble(weightIn.getText().toString());
height = Double.parseDouble(heightIn.getText().toString());
double bmi = (weight / (height * height));
String result = String.format("%.2f", bmi);
Log.d("MyActivity", result);
BmiResult.setText(result, TextView.BufferType.NORMAL);
}
}
<LinearLayout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context="${relativePackage}.${activityClass}" >
<TextView
android:id="@+id/HeightInput1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/HeightInput"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/InchesHint"
android:inputType="numberDecimal" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/WeightInput1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/WeightInput"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/PoundsHint"
android:inputType="numberDecimal" />
<Button
android:id="@+id/CalculateButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="calculateBMI"
android:text="@string/CalculateButton" />
<TextView
android:id="@+id/BmiResult"
android:layout_width="100dp"
android:layout_height="0dp"
android:layout_weight="0.00"
android:text="@string/BmiResult" />
Upvotes: 0
Views: 3941
Reputation: 3195
so change java code with this
heightIn = (TextView) findViewById (R.id.HeightInput1);
weightIn = (TextView) findViewById (R.id.WeightInput1);
else change in xml file with this
<EditText
android:id="@+id/HeightInput1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/HeightInput"
android:textAppearance="?android:attr/textAppearanceMedium" />
Upvotes: 1
Reputation: 304
heightIn = (EditText) findViewById (R.id.HeightInput1);
Here you mentioned heightIn as EditTect and in your layout.xml it is as TextView,
instead of finding "HeightInput1" which is just your text to label, it should find the EditText
heightIn = (EditText) findViewById (R.id.EditText1);
same with the weight input... good luck!
Upvotes: 1
Reputation: 47807
Your heightIn
is not EditText
and you're trying to cast it as EditText
so you got Error
java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText at com.example.bmicalculator.MainActivity.initializeApp(MainActivity.java.32)
so do as,
heightIn = (TextView) findViewById (R.id.HeightInput1);
weightIn = (TextView) findViewById (R.id.WeightInput1);
Upvotes: 4
Reputation: 38409
in java file
heightIn = (EditText) findViewById (R.id.HeightInput1);
and
in xml file
<TextView
android:id="@+id/HeightInput1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/HeightInput"
android:textAppearance="?android:attr/textAppearanceMedium" />
So change according to your requirement.
Upvotes: 2
Reputation: 4032
In Xml file you are declare as TextView and you are trying to parse TextView to EditText that's why you are getting an Exception.
Change EditText Variable
private EditText heightIn;
private EditText weightIn;
To
private TextView heightIn;
private TextView weightIn;
And replace your initializeApp() function with:
private void initializeApp() {
heightIn = (TextView) findViewById (R.id.HeightInput1);
weightIn = (TextView) findViewById (R.id.WeightInput1);
CalculateButton = (Button) findViewById (R.id.CalculateButton);
BmiResult = (EditText) findViewById (R.id.BmiResult);
}
Upvotes: 1
Reputation: 3359
Change this:
<TextView
android:id="@+id/HeightInput1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/HeightInput"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/WeightInput1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/WeightInput"
android:textAppearance="?android:attr/textAppearanceMedium" />
Via
<EditText
android:id="@+id/HeightInput1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/HeightInput"
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/WeightInput1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/WeightInput"
android:textAppearance="?android:attr/textAppearanceMedium" />
OR
heightIn = (EditText) findViewById (R.id.HeightInput1);
weightIn = (EditText) findViewById (R.id.WeightInput1);
via
heightIn = (TextView) findViewById (R.id.HeightInput1);
weightIn = (TextView) findViewById (R.id.WeightInput1);
Upvotes: 2