Android 将浮点值作为json传递:无效的int错误
我有一个android程序,其中我从用户的EditText字段中获取浮点值作为输入,并将JSON格式的输入值发送到API。但是,当我单击“提交”按钮时,应用程序崩溃。应用程序可以很好地处理int值,但当我使用浮点或十进制值时,应用程序崩溃 错误行:Android 将浮点值作为json传递:无效的int错误,android,json,Android,Json,我有一个android程序,其中我从用户的EditText字段中获取浮点值作为输入,并将JSON格式的输入值发送到API。但是,当我单击“提交”按钮时,应用程序崩溃。应用程序可以很好地处理int值,但当我使用浮点或十进制值时,应用程序崩溃 错误行: login.put("NumberOfDays",txtLdays.getText().toString()); logcat显示的错误: java.lang.NumberFormatException: Invalid int: "1.2" 代
login.put("NumberOfDays",txtLdays.getText().toString());
logcat显示的错误:
java.lang.NumberFormatException: Invalid int: "1.2"
代码是
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.json.JSONObject;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
public class LeaveApp extends Activity implements OnClickListener
{
EditText txtDate ,txtLdays, txtLreasons;
TextView txtDate1,txtEmp, txtBleave;
ImageButton btnCalendar;
Button btnSubmit;
private int mYear, mMonth, mDay;
private Spinner s1;
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_leave);
txtLdays = (EditText) findViewById(R.id.etLdays);
txtLreasons = (EditText) findViewById(R.id.etLreason);
txtDate = (EditText) findViewById(R.id.etSdate);
txtDate1= (TextView) findViewById(R.id.tvHidden);
txtBleave= (TextView) findViewById(R.id.tvL);
btnCalendar = (ImageButton) findViewById(R.id.imageButton1);
btnSubmit = (Button) findViewById(R.id.btnLeave1);
s1=(Spinner)findViewById(R.id.spinnerL);
btnCalendar.setOnClickListener(this);
btnSubmit.setOnClickListener(this);
setCurrentDateOnView();
// empid();
addItemsOnSpinner1();
}
public void onClick(View v)
{
//Calender ImageButton function
if (v == btnCalendar) {
// Process to get Current Date
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
// Launch Date Picker Dialog
DatePickerDialog dpd = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
// Display Selected date in textbox
txtDate.setText(dayOfMonth + "-"
+ (monthOfYear + 1) + "-" + year);
}
}, mYear, mMonth, mDay);
dpd.show();
}
if (v == btnSubmit)
{
if(isOnline())
{
if(validate1())
{
if(balanceLeaves())
{
Bundle extras = getIntent().getExtras();
String strEmployeeID="";
if (extras != null)
{
String value = extras.getString("new_variable_name");
// Toast.makeText(getBaseContext(), value, Toast.LENGTH_LONG).show();
strEmployeeID = value;
}
JSONObject login = new JSONObject();
final String SelectedLeave = s1.getSelectedItem().toString();
try
{
login.put("EmployeeId", strEmployeeID);
login.put("Date",txtDate1.getText().toString());
login.put("TypeLeave",SelectedLeave);
login.put("BalanceLeaves",txtBleave.getText().toString());
login.put("StartDate",txtDate.getText().toString());
login.put("NumberOfDays",txtLdays.getText().toString());
login.put("Reason",txtLreasons.getText().toString());
//
JSONObject finaldata = new JSONObject();
finaldata.put("LeaveRequest", login);
Toast.makeText(getBaseContext(), finaldata.toString(), Toast.LENGTH_LONG).show();
}
如果需要浮点值而不是整数,请尝试使用Integer.parseInttxtLdays.getText.toString或Float.parseFloat。您可以通过将输入乘以10来解决此问题。 1.2变为12。记住在API中除以10
float f = 52.92;
login.put("NumberOfDays", f);
似乎有效。试试这个
login.putNumberOfDays,String.valuetxtLdays.getText 请详细说明这个答案好吗?1.2不是整数,因为它是十进制值。如果你乘以10,结果是12,这是一个有效的整数。然后你可以计算字符串,整数。我不确定这是你的实际问题,如果值是1.9怎么办?1.9和19有着巨大的差异。你真的认为这是一个聪明的想法吗?如果你能在API中将这个数字除以10,那么差别就不是问题了。您将返回原始浮点值。但是你必须控制APIDo,我对xml做了一些更改,但是没有一个答案是有效的。你能提供日志吗?这是我的错误。我的比较功能出了问题。