Hello Having some troubles Help would be appreciated Create
Hello,
Having some troubles. Help would be appreciated :)
Create the Calculator application described below
Calculator Definition:
We would like an integer calculator that that looks something like (i.e. we don\'t need to deal with floating point for this):
The \"C\" button clears the calculator.
The \"<--\" button is a back space button
The \"+\", \"-\", \"*\", and \"/\" buttons will result in taking the current display and making it the first operand in a calculation. Also note that the operator (i.e. +,-,*,/) is saved until the \"=\" button is pressed. Note that the display is cleared after pressing one of these operators to allow the user to enter in the second operand.
The \"=\" button will take the first operand and the current display value as the second operand. The operation performed is what was saved when the user pressed (+,-,*,/). The result is stored in the display.
Useful things:
TextView and Buttons have the 2 useful methods:
void setText(String) - This can be used to change the value of either a TextView or Button.
CharSequence getText() - returns an object that is almost a string. If you tack on \".toString()\" on the right hand side of what is returned, you will get a String().
The following onClick template might be useful to you:
I have 2 layout files that you could use (The above image was taken with the TableLayout version ... probably the better choice):
LinearLayout.xml
TableLayout.xml
Handy routine
If you like, you can use a handy little routine (your option ... you might like your own code better). I used this routine when I created my published answer.
If you construct this class and call the methods when you get to the appropriate actions in your calculator, this class takes care of the details for you.
CalculatorEvaluation.java
5554: My SecondvideoAvd JH2 3G 4:39 Basic Controls Hardware Buttons MENU DPAD not enabled in AWD Hardware Keyboard Use your physical keyboard to provide inputSolution
I tried to develop
Create Activity: MainActivity
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<LinearLayout
xmlns:android=\"http://schemas.android.com/apk/res/android\"
android:orientation=\"vertical\"
android:layout_width=\"fill_parent\"
android:layout_height=\"fill_parent\">
<LinearLayout
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\"
android:id=\"@+id/linearLayout1\"
android:layout_marginLeft=\"10pt\"
android:layout_marginRight=\"10pt\"
android:layout_marginTop=\"3pt\">
<EditText
android:layout_weight=\"1\"
android:layout_height=\"wrap_content\"
android:layout_marginRight=\"5pt\"
android:id=\"@+id/etNum1\"
android:layout_width=\"match_parent\"
android:inputType=\"numberDecimal\">
</EditText>
<EditText
android:layout_height=\"wrap_content\"
android:layout_weight=\"1\"
android:layout_marginLeft=\"5pt\"
android:id=\"@+id/etNum2\"
android:layout_width=\"match_parent\"
android:inputType=\"numberDecimal\">
</EditText>
</LinearLayout>
<LinearLayout
android:layout_width=\"match_parent\"
android:layout_height=\"wrap_content\"
android:id=\"@+id/linearLayout2\"
android:layout_marginTop=\"3pt\"
android:layout_marginLeft=\"5pt\"
android:layout_marginRight=\"5pt\">
<Button
android:layout_height=\"wrap_content\"
android:layout_width=\"match_parent\"
android:layout_weight=\"1\"
android:text=\"+\"
android:textSize=\"8pt\"
android:id=\"@+id/btnAdd\">
</Button>
<Button
android:layout_height=\"wrap_content\"
android:layout_width=\"match_parent\"
android:layout_weight=\"1\"
android:text=\"-\"
android:textSize=\"8pt\"
android:id=\"@+id/btnSub\">
</Button>
<Button
android:layout_height=\"wrap_content\"
android:layout_width=\"match_parent\"
android:layout_weight=\"1\"
android:text=\"*\"
android:textSize=\"8pt\"
android:id=\"@+id/btnMult\">
</Button>
<Button
android:layout_height=\"wrap_content\"
android:layout_width=\"match_parent\"
android:layout_weight=\"1\"
android:text=\"/\"
android:textSize=\"8pt\"
android:id=\"@+id/btnDiv\">
</Button>
</LinearLayout>
<TextView
android:layout_height=\"wrap_content\"
android:layout_width=\"match_parent\"
android:layout_marginLeft=\"5pt\"
android:layout_marginRight=\"5pt\"
android:textSize=\"12pt\"
android:layout_marginTop=\"3pt\"
android:id=\"@+id/tvResult\"
android:gravity=\"center_horizontal\">
</TextView>
</LinearLayout>
We have two input fields here, four buttons and a text field for output. Have a look at inputType attribute for EditText. It defines the type of the content. I’ve specified numberDecimal - that is field can only contain numbers and a dot, it will not allow letters. It is convenient as you don’t have to code any checkings.
For the TextView gravity attribute is specified. It defines how will the text in the TextView will be located. Don’t confuse it with layout_gravity which is responsible for TextView location in a ViewGroup.
Now we need to read field contents, define which buttons has been pressed and output the needed result. Open MainActivity.java and write the code:
public class MainActivity extends Activity implements OnClickListener {
EditText etNum1;
EditText etNum2;
Button btnAdd;
Button btnSub;
Button btnMult;
Button btnDiv;
TextView tvResult;
String oper = \"\";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// find the elements
etNum1 = (EditText) findViewById(R.id.etNum1);
etNum2 = (EditText) findViewById(R.id.etNum2);
btnAdd = (Button) findViewById(R.id.btnAdd);
btnSub = (Button) findViewById(R.id.btnSub);
btnMult = (Button) findViewById(R.id.btnMult);
btnDiv = (Button) findViewById(R.id.btnDiv);
tvResult = (TextView) findViewById(R.id.tvResult);
// set a listener
btnAdd.setOnClickListener(this);
btnSub.setOnClickListener(this);
btnMult.setOnClickListener(this);
btnDiv.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
float num1 = 0;
float num2 = 0;
float result = 0;
// check if the fields are empty
if (TextUtils.isEmpty(etNum1.getText().toString())
|| TextUtils.isEmpty(etNum2.getText().toString())) {
return;
}
// read EditText and fill variables with numbers
num1 = Float.parseFloat(etNum1.getText().toString());
num2 = Float.parseFloat(etNum2.getText().toString());
// defines the button that has been clicked and performs the corresponding operation
// write operation into oper, we will use it later for output
switch (v.getId()) {
case R.id.btnAdd:
oper = \"+\";
result = num1 + num2;
break;
case R.id.btnSub:
oper = \"-\";
result = num1 - num2;
break;
case R.id.btnMult:
oper = \"*\";
result = num1 * num2;
break;
case R.id.btnDiv:
oper = \"/\";
result = num1 / num2;
break;
default:
break;
}
// form the output line
tvResult.setText(num1 + \" \" + oper + \" \" + num2 + \" = \" + result);
}
}
I guess everything is clear in comments. Read values, define the button, perform an operation and output to the text field. Activity is a listener of the clicked buttons.
Save everything and run. Two menu items appeared:
Reset - clears all the fields
Quit - closes the application






