Reputation: 133
I'm trying to create a simple currency converter from USD, GBP, and Euro by entering an amount in a field, selecting the from currency
in a spinner, and to currency
in another spinner. I then output the converted amount in a text field.
But for some reason I cannot get past the onClick
method and I do not know why. It might be something simple but I cannot see it.
Here is my code:
public class Calculate extends Activity implements OnItemSelectedListener,
OnClickListener {
Button Calculate;
String stringAmount;
double exchangeRate, E, D, Answer;
EditText Amount;
Spinner spinner, spinner1;
int ConvertFrom, ConvertTo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calculate);
Initilise();
// this is calling the method initilise.
// listens for the button to be clicked
Calculate.setOnClickListener(this);
}
private void Initilise() {
// Method initilise.
/* Button */Calculate = (Button) findViewById(R.id.cal);
/* EditText */Amount = (EditText) findViewById(R.id.amount);
spinner = (Spinner) findViewById(R.id.Currency);
spinner1 = (Spinner) findViewById(R.id.Currency1);
}
public void format() {
ConvertFrom = 0;
ConvertTo = 0;
stringAmount = Amount.getText().toString();
E = 0; // set it to 0 as the default
try {
E = Integer.parseInt(stringAmount);
} catch (NumberFormatException e) {
}
}
@SuppressWarnings("deprecation")
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
spinner();
switch (v.getId()) {
case R.id.cal:
if (ConvertFrom == 0) {
FromEuro();
} else if (ConvertFrom == 1) {
FromUsd();
} else if (ConvertFrom == 2) {
FromGbp();
} else {
// Amount.setText("Invalid Input");
AlertDialog alertDialog = new AlertDialog.Builder(this)
.create();
alertDialog.setTitle("Input");
alertDialog.setMessage("Please Input a amount");
alertDialog.setButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// here you can add functions
}
});
alertDialog.setIcon(R.drawable.ic_launcher);
alertDialog.show();
}
}
}
public void spinner() {
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, R.array.Currencies);
spinner = (Spinner) findViewById(R.id.Currency);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(this);
spinner1 = (Spinner) findViewById(R.id.Currency1);
spinner1.setAdapter(adapter);
spinner1.setOnItemSelectedListener(this);
}
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// TODO Auto-generated method stub
int posistion = spinner.getSelectedItemPosition();
ConvertFrom = posistion;
int posistion1 = spinner1.getSelectedItemPosition();
ConvertTo = posistion1;
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
@SuppressWarnings("deprecation")
private void FromEuro() {
// TODO Auto-generated method stub
if (ConvertTo == 1) {
exchangeRate = 1.336891;
Answer = E * exchangeRate;
String Final = Double.toString(Answer);
Amount.setText(Final);
} else if (ConvertTo == 2) {
exchangeRate = 1.336891;
Answer = E * exchangeRate;
String Final = Double.toString(Answer);
Amount.setText(Final);
} else if (ConvertTo == 0) {
AlertDialog alertDialog = new AlertDialog.Builder(null).create();
alertDialog.setTitle("Input");
alertDialog.setMessage("Please Select a gender");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// here you can add functions
}
});
alertDialog.setIcon(R.drawable.ic_launcher);
alertDialog.show();
}
}
@SuppressWarnings("deprecation")
private void FromUsd() {
// TODO Auto-generated method stub
if (ConvertTo == 0) {
exchangeRate = 1.336891;
Answer = E * exchangeRate;
String Final = Double.toString(Answer);
Amount.setText(Final);
} else if (ConvertTo == 1) {
exchangeRate = 1.336891;
Answer = E * exchangeRate;
String Final = Double.toString(Answer);
Amount.setText(Final);
} else {
if (ConvertTo == 2) {
AlertDialog alertDialog = new AlertDialog.Builder(null)
.create();
alertDialog.setTitle("Input");
alertDialog.setMessage("Please Select a gender");
alertDialog.setButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// here you can add functions
}
});
alertDialog.setIcon(R.drawable.ic_launcher);
alertDialog.show();
}
}
}
private void FromGbp() {
// TODO Auto-generated method stub
if (ConvertTo == 2) {
exchangeRate = 1.336891;
Answer = E * exchangeRate;
String Final = Double.toString(Answer);
Amount.setText(Final);
} else if (ConvertTo == 0) {
exchangeRate = 1.336891;
Answer = E * exchangeRate;
String Final = Double.toString(Answer);
Amount.setText(Final);
} else {
if (ConvertTo == 1) {
Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("Input");
alertDialog.setMessage("Please Select a gender");
alertDialog.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// here you can add functions
}
});
alertDialog.setIcon(R.drawable.ic_launcher);
alertDialog.show();
}
}
}`
}
but i am now receiving
02-19 16:55:01.514: E/AndroidRuntime(28638): at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:142)
the above error.
Previously this question had the following error:
Wondering if anyone can help. Im getting these errors:
FATAL EXCEPTION: main
java.lang.NullPointerException
at com.travelcurrencyconverter.Calculate.onClick(Calculate.java:64)
at android.view.View.performClick(View.java:4222)
at android.view.View$PerformClick.run(View.java:17273)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4895)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
at dalvik.system.NativeStart.main(Native Method)
Upvotes: 0
Views: 335
Reputation: 27844
You're trying to access a member of a reference (the part before the dot) that is null
on line 64.
Also, when you post code, indent all of it by four spaces to get all of it syntax colored.
Also, before you do that, make sure to auto format the code in your IDE.
Upvotes: 1