Reputation: 429
I am new in android and preparing a addition project
. I want get value1
and value2
and calculate the result. But I am getting error that Variable accessed from inner class, need to declare final
. And if I declare the variable as final
then I got another error message that cannot assign a value to final variable
.
package com.example.borntoflirt.design1;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class AdditionActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.addition);
final EditText valueOne;
final EditText valueTwo;
final TextView result;
Button btnAdd;
final double num1;
double num2;
double sum;
valueOne = (EditText) findViewById(R.id.valueOne);
valueTwo = (EditText) findViewById(R.id.valueTwo);
result = (TextView) findViewById(R.id.result);
btnAdd = (Button) findViewById(R.id.buttonAdd);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
num1 = Double.parseDouble(valueOne.getText().toString());
// result.setText(Double.toString(Double.parseDouble(valueOne.getText().toString()) + Double.parseDouble(valueTwo.getText().toString())));
}
});
}
}
Upvotes: 0
Views: 246
Reputation: 627
Your code should look like this:
package com.example.borntoflirt.design1;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class AdditionActivity extends AppCompatActivity {
private EditText valueOne;
private EditText valueTwo;
private TextView result;
private Button btnAdd;
private double num1;
private double num2;
private double sum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.addition);
valueOne = (EditText) findViewById(R.id.valueOne);
valueTwo = (EditText) findViewById(R.id.valueTwo);
result = (TextView) findViewById(R.id.result);
btnAdd = (Button) findViewById(R.id.buttonAdd);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
num1 = Double.parseDouble(valueOne.getText().toString());
// result.setText(Double.toString(Double.parseDouble(valueOne.getText().toString()) + Double.parseDouble(valueTwo.getText().toString())));
}
});
}
}
in case valueOne is empty, you should add one part to check if EditText have some value, otherwise you can get another error:
public void onClick(View v) {
if(!valueOne.getText().toString().equals("")) {
num1 = Double.parseDouble(valueOne.getText().toString());
// result.setText(Double.toString(Double.parseDouble(valueOne.getText().toString()) + Double.parseDouble(valueTwo.getText().toString())));
} else {
Toast.makeText(AdditionActivity.this, "Please add some nunber to continue", Toast.LENGTH_LONG).show();
}
}
Upvotes: 1
Reputation: 2219
Just simply declare the variable in the root of the class outside the function.
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class AdditionActivity extends AppCompatActivity {
// Just declare the varibles here
double num1;
double num2;
double sum;
EditText valueOne;
EditText valueTwo;
TextView result;
Button btnAdd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.addition);
valueOne = (EditText) findViewById(R.id.valueOne);
valueTwo = (EditText) findViewById(R.id.valueTwo);
result = (TextView) findViewById(R.id.result);
btnAdd = (Button) findViewById(R.id.buttonAdd);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
num1 = Double.parseDouble(valueOne.getText().toString());
// result.setText(Double.toString(Double.parseDouble(valueOne.getText().toString()) + Double.parseDouble(valueTwo.getText().toString())));
}
});
}
}
Upvotes: 0