From 493cd0b9b1dadc7c7947a1da10310281fce157b8 Mon Sep 17 00:00:00 2001 From: Brandon Rodriguez <brodriguez8774@mail.kvcc.edu> Date: Thu, 8 Oct 2015 17:12:14 -0400 Subject: [PATCH] Updates program logic. Fixes crashing error on attempting to parse user input. UI should now display more. Still WIP. --- README.md | 3 + .../cis298/cis298assignment2/Conversion.java | 17 +- .../TemperatureConverter.java | 223 ++++++++++++++---- .../layout/activity_temperature_converter.xml | 15 +- app/src/main/res/values/strings.xml | 2 +- 5 files changed, 202 insertions(+), 58 deletions(-) diff --git a/README.md b/README.md index 13536f0..d41f809 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,9 @@ The book does not cover how to do work with Radio Buttons. I will talk about it ## Outside Resources Used +http://javatechig.com/android/android-radio-button-example +* Determined the equivalent of OnClickListener for radio buttons. + ## Known Problems, Issues, And/Or Errors in the Program diff --git a/app/src/main/java/edu/kvcc/cis298/cis298assignment2/Conversion.java b/app/src/main/java/edu/kvcc/cis298/cis298assignment2/Conversion.java index 632d60b..bb4ecf5 100644 --- a/app/src/main/java/edu/kvcc/cis298/cis298assignment2/Conversion.java +++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment2/Conversion.java @@ -1,5 +1,8 @@ package edu.kvcc.cis298.cis298assignment2; +import android.widget.RadioButton; +import android.widget.RadioGroup; + /** * Created by brodriguez8774 on 10/1/2015. */ @@ -69,6 +72,12 @@ public class Conversion { //region Private Methods + private void CalculateTemperature() + { + CalculateBase(); + CalculateConvertTo(); + } + /** * Converts user's int to base int. */ @@ -117,7 +126,7 @@ public class Conversion { } // If desired is Rankin, convert from base. else { - convertedValueDouble = ((baseDouble + 273.15) * 9 / 5); + convertedValueDouble = ((baseDouble * 9 / 5) - 491.67); } } } @@ -130,11 +139,7 @@ public class Conversion { //region Public Methods - public void CalculateTemperature() - { - CalculateBase(); - CalculateConvertTo(); - } + //endregion diff --git a/app/src/main/java/edu/kvcc/cis298/cis298assignment2/TemperatureConverter.java b/app/src/main/java/edu/kvcc/cis298/cis298assignment2/TemperatureConverter.java index 01150d7..56101b2 100644 --- a/app/src/main/java/edu/kvcc/cis298/cis298assignment2/TemperatureConverter.java +++ b/app/src/main/java/edu/kvcc/cis298/cis298assignment2/TemperatureConverter.java @@ -50,6 +50,8 @@ public class TemperatureConverter extends AppCompatActivity { private static final String TAG = "TemperatureConverter"; private static final String KEY_INDEX = "index"; + Conversion conversion; + //endregion @@ -63,69 +65,201 @@ public class TemperatureConverter extends AppCompatActivity { */ private void Convert() { + // Sets user's input to a variable. + String userInputString = mUserInputEditText.getText().toString().trim(); + Log.d(TAG, "Parsed: " + userInputString); + double userDouble = Double.parseDouble(userInputString); + Log.d(TAG, "Parsed: " + userDouble); + // Query to determine which radio buttons have been selected. Stores value as int. mSelectedInitialId = mInitialGroup.getCheckedRadioButtonId(); mSelectedConvertId = mConvertGroup.getCheckedRadioButtonId(); - Conversion conversion = new Conversion(0, mSelectedInitialId, mSelectedConvertId); + int initialGroupSelection; + int convertGroupSelection; + + if (mSelectedInitialId == mInitial1Radio.getId()) { + initialGroupSelection = 1; + } + else { + if (mSelectedInitialId == mInitial2Radio.getId()) { + initialGroupSelection = 2; + } + else { + if (mSelectedInitialId == mInitial3Radio.getId()) { + initialGroupSelection = 3; + } + else { + if (mSelectedInitialId == mInitial4Radio.getId()) { + initialGroupSelection = 4; + } + } + } + } + + if (mSelectedConvertId == mConvert1Radio.getId()) { + convertGroupSelection = 1; + } + else { + if (mSelectedConvertId == mConvert2Radio.getId()) { + convertGroupSelection = 2; + } + else { + if (mSelectedConvertId == mConvert3Radio.getId()) { + convertGroupSelection = 3; + } + else { + if (mSelectedConvertId == mConvert4Radio.getId()) { + convertGroupSelection = 4; + } + } + } + } + + conversion = new Conversion(0, initialGroupSelection, convertGroupSelection); DisplayConversion(); } private void DisplayConversion() { - String initialDegree; - String convertDegree; - String initialEquation; + double initialTemp = conversion.getInitialValueDouble(); + double convertTemp = conversion.getConvertedValueDouble(); String conversion1String; String conversion2String; String equation1String; String equation2String; // Determines what types of strings should display. + // Combinations for Initial1 selected. if (mSelectedInitialId == mInitial1Radio.getId()) { - initialDegree = "C"; - initialEquation = "[C]"; - } - else { - if (mSelectedInitialId == mInitial2Radio.getId()) { - initialDegree = "F"; - initialEquation = "[F]"; + if (mSelectedConvertId == mConvert1Radio.getId()) { + conversion1String = initialTemp + "C"; + conversion2String = convertTemp + "C"; + equation1String = "[C]"; + equation2String = "[C]"; } else { - if (mSelectedInitialId == mInitial3Radio.getId()) { - initialDegree = "K"; - initialEquation = "[K]"; + if (mSelectedConvertId == mConvert2Radio.getId()) { + conversion1String = initialTemp + "C"; + conversion2String = convertTemp + "F"; + equation1String = "[F]"; + equation2String = "([C] x 9/5) + 32"; } else { - initialDegree = "R"; - initialEquation = "[R]"; + if (mSelectedConvertId == mConvert3Radio.getId()) { + conversion1String = initialTemp + "C"; + conversion2String = convertTemp + "K"; + equation1String = "[K]"; + equation2String = "[C] + 273.15"; + } + else { + conversion1String = initialTemp + "C"; + conversion2String = convertTemp + "R"; + equation1String = "[R]"; + equation2String = "([C] * 9 / 5) + 491.67"; + } } } } - - if (mSelectedConvertId == mConvert1Radio.getId()) { - convertDegree = "C"; - } else { - if (mSelectedConvertId == mConvert2Radio.getId()) { - convertDegree = "F"; + // Combinations for Initial2 selected. + if (mSelectedInitialId == mInitial2Radio.getId()) { + if (mSelectedConvertId == mConvert1Radio.getId()) { + conversion1String = initialTemp + "F"; + conversion2String = convertTemp + "C"; + equation1String = "[C]"; + equation2String = "([F] - 32) * 5 / 9"; + } + else { + if (mSelectedConvertId == mConvert2Radio.getId()) { + conversion1String = initialTemp + "F"; + conversion2String = convertTemp + "F"; + equation1String = "[F]"; + equation2String = "[F]"; + } + else { + if (mSelectedConvertId == mConvert3Radio.getId()) { + conversion1String = initialTemp + "F"; + conversion2String = convertTemp + "K"; + equation1String = "[K]"; + equation2String = "[F]"; + } + else { + conversion1String = initialTemp + "F"; + conversion2String = convertTemp + "R"; + equation1String = "[R]"; + equation2String = "[F]"; + } + } + } } else { - if (mSelectedConvertId == mConvert3Radio.getId()) { - convertDegree = "K"; + // Combinations for Initial3 selected. + if (mSelectedInitialId == mInitial3Radio.getId()) { + if (mSelectedConvertId == mConvert1Radio.getId()) { + conversion1String = initialTemp + "K"; + conversion2String = convertTemp + "C"; + equation1String = "[C]"; + equation2String = "[K] - 273.15"; + } + else { + if (mSelectedConvertId == mConvert2Radio.getId()) { + conversion1String = initialTemp + "K"; + conversion2String = convertTemp + "F"; + equation1String = "[F]"; + equation2String = "[K]"; + } + else { + if (mSelectedConvertId == mConvert3Radio.getId()) { + conversion1String = initialTemp + "K"; + conversion2String = convertTemp + "K"; + equation1String = "[K]"; + equation2String = "[K]"; + } + else { + conversion1String = initialTemp + "K"; + conversion2String = convertTemp + "R"; + equation1String = "[R]"; + equation2String = "[K]"; + } + } + } } else { - convertDegree = "R"; + // Combinations for Initial4 selected + if (mSelectedConvertId == mConvert1Radio.getId()) { + conversion1String = initialTemp + "R"; + conversion2String = convertTemp + "C"; + equation1String = "[C]"; + equation2String = "([R] - 491.67) * 5 / 9"; + } + else { + if (mSelectedConvertId == mConvert2Radio.getId()) { + conversion1String = initialTemp + "R"; + conversion2String = convertTemp + "F"; + equation1String = "[F]"; + equation2String = "[R]"; + } + else { + if (mSelectedConvertId == mConvert3Radio.getId()) { + conversion1String = initialTemp + "R"; + conversion2String = convertTemp + "K"; + equation1String = "[K]"; + equation2String = "[R]"; + } + else { + conversion1String = initialTemp + "R"; + conversion2String = convertTemp + "R"; + equation1String = "[R]"; + equation2String = "[R]"; + } + } + } } } } - conversion1String = initialDegree; - conversion2String = convertDegree; - equation1String = initialEquation; - equation2String = ""; - String fullConversionString = conversion1String + " = " + conversion2String; String fullEquationString = equation1String + " = " + equation2String; @@ -178,9 +312,9 @@ public class TemperatureConverter extends AppCompatActivity { // Section which sets onClickListeners (watches for user action). // OnClickListener for Initial Radio Button Group. - mInitialGroup.setOnClickListener(new View.OnClickListener() { + mInitialGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override - public void onClick(View view){ + public void onCheckedChanged(RadioGroup group, int checkedID) { // Debugging to figure out what values are actually given for checked buttons. int selectedInitialId = mInitialGroup.getCheckedRadioButtonId(); @@ -191,19 +325,17 @@ public class TemperatureConverter extends AppCompatActivity { // Checks to see if both groups have been checked, if convert button has been // clicked at least once, and user has input a number. if (mInitialGroupChecked && mConvertGroupChecked && mUserInputEditText.length() > 0) { - double userInput = Double.parseDouble(mUserInputEditText.toString()); Convert(); - } - else { + } else { mInitialGroupChecked = true; } } }); - // OnClickListener for Convert To Radio Button Group. - mConvertGroup.setOnClickListener(new View.OnClickListener() { + // OnCheckChangeListener for Convert To Radio Button Group. + mConvertGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override - public void onClick(View view) { + public void onCheckedChanged(RadioGroup group, int checkedID) { // Debugging to figure out what values are actually given for checked buttons. int selectedInitialId = mInitialGroup.getCheckedRadioButtonId(); @@ -216,10 +348,8 @@ public class TemperatureConverter extends AppCompatActivity { // clicked at least once, and user has input a number. if (mInitialGroupChecked && mConvertGroupChecked && mConvertButtonIsClicked && mUserInputEditText.length() > 0) { - double userInput = Double.parseDouble(mUserInputEditText.toString()); Convert(); - } - else { + } else { mConvertGroupChecked = true; } } @@ -241,18 +371,15 @@ public class TemperatureConverter extends AppCompatActivity { // Checks to see if both groups have been checked. if (mInitialGroupChecked && mConvertGroupChecked) { - double userInput = Double.parseDouble(mUserInputEditText.toString()); mConvertButtonIsClicked = true; Convert(); - } - else { + } else { messageResId = R.string.convert_error_2_toast; - Toast.makeText(TemperatureConverter.this, messageResId, Toast.LENGTH_SHORT); + Toast.makeText(TemperatureConverter.this, messageResId, Toast.LENGTH_SHORT).show(); } - } - else { + } else { messageResId = R.string.convert_error_1_toast; - Toast.makeText(TemperatureConverter.this, messageResId, Toast.LENGTH_SHORT); + Toast.makeText(TemperatureConverter.this, messageResId, Toast.LENGTH_SHORT).show(); } } }); diff --git a/app/src/main/res/layout/activity_temperature_converter.xml b/app/src/main/res/layout/activity_temperature_converter.xml index a6c1bae..20c38e4 100644 --- a/app/src/main/res/layout/activity_temperature_converter.xml +++ b/app/src/main/res/layout/activity_temperature_converter.xml @@ -6,16 +6,25 @@ android:padding="20dp" android:orientation="vertical" > + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center_vertical" + android:padding="10dp" + android:orientation="vertical"> + + <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" - android:gravity="top" + android:gravity="start" android:text="@string/convert_string" /> <EditText android:id="@+id/user_input_edit_text" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + android:inputType="number" /> <LinearLayout android:layout_width="match_parent" @@ -141,6 +150,6 @@ </LinearLayout> - + </LinearLayout> </LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 189aae4..29292b7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,7 +12,7 @@ <string name="fahrenheit_string">Fahrenheit</string> <string name="kelvin_string">Kelvin</string> <string name="rankine_string">Rankine</string> - <string name="convert_button_string">CONVERT</string> + <string name="convert_button_string">Convert</string> <!--Toasts--> <string name="convert_error_1_toast">Please input a number to convert!</string> -- GitLab