Reputation: 39
i have this simple beginners android program. it just ask 2 numbers and outputs the sum of the 2 numbers.
I HAVE 4 ERRORS
1.)in activity_plus.xml in line <EditText android:text=""
it says"This text field does not specify an inputType or a hint"
2&3)in plus.java in line private void initControls()
it says
Multiple markers at this line
- Method breakpoint:Plus [entry] - initControls()
- The method initControls() from the type Plus is never
used locally
4.)is when i run the program, i input 2 numbers. then i click computer it errors and the program shuts down.
here is my program:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".Plus" >
<EditText android:id="@+id/edit_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/edit_message" />
<EditText android:id="@+id/add_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="@string/add_message" />
<Button android:id="@+id/calculate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="calculate"
android:text="@string/calculate" />
<EditText android:text=""
android:id="@+id/tt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
package com.example.add;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class Plus extends Activity {
EditText amount1;
EditText amount2;
TextView tt;
Button calculate;
double x=0;
double y=0;
double z=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_plus);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.plus, menu);
return true;
}
private void initControls()
{
amount1=(EditText)findViewById(R.id.edit_message);
amount2=(EditText)findViewById(R.id.add_message);
tt=(TextView)findViewById(R.id.tt);
calculate=(Button)findViewById(R.id.calculate);
calculate.setOnClickListener(new Button.OnClickListener()
{public void onClick
(View v) { calculate();}});
}
public void calculate() {
x=Double.parseDouble(amount1.getText().toString());
y=Double.parseDouble(amount2.getText().toString());
z=x+y;
tt.setText(Double.toString(z));
}
}
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">add</string>
<string name="action_settings">Settings</string>
<string name="edit_message">Enter number</string>
<string name="hello_world">+</string>
<string name="calculate">Compute</string>
<string name="add_message">Enter number</string>
<string name="tt">Answer</string>
</resources>
Upvotes: 0
Views: 692
Reputation: 11323
Add:
initControls();
in your activity's onCreate
method
Update:
also you set up an onclick attribute for your button in your xml android:onClick="calculate"
, so you should make use of it, change your code to this:
private void initControls()
{
amount1=(EditText)findViewById(R.id.edit_message);
amount2=(EditText)findViewById(R.id.add_message);
tt=(TextView)findViewById(R.id.tt);
calculate=(Button)findViewById(R.id.calculate);
}
public void calculate(View view) {
x=Double.parseDouble(amount1.getText().toString());
y=Double.parseDouble(amount2.getText().toString());
z=x+y;
tt.setText(Double.toString(z));
}
so you don't need the listener, just add view parameter to your calculate method.
Upvotes: 0
Reputation: 5136
In xml file you declare onclick as calculate so in java page you have to write as below
public void calculate(View v) { }
Upvotes: 0
Reputation: 4499
a. Call your initControls() in onCreate() of your activity.
b. Please use this clickListener in your onCreate not in private method
calculate.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v) {
calculate();
}
});
c. It should be a TextView not an EditText
<EditText
android:text=""
android:id="@+id/tt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
use this
<TextView android:id="@+id/tt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello"/>
Upvotes: 0
Reputation: 4942
Call initControls
inside the oncreate
method like this
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_plus);
initControls();
}
Upvotes: 1