java.lang.numberformatexception:invalid long:""

时间:2015-01-21 12:26:34

标签: java android

  

首先,我想连接WebServis有参数(标识号,姓名,姓氏,出生日期)。但我无法解决此错误。

EditText txtTC;
EditText txtAd;
EditText txtSoyad;
EditText txtDogumYili;
Button btnDogrula;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txtTC=(EditText)findViewById(R.id.txtTC);
    txtAd=(EditText)findViewById(R.id.txtAd);
    txtSoyad=(EditText)findViewById(R.id.txtSoyad);
    txtDogumYili=(EditText)findViewById(R.id.txtDogum);
    btnDogrula=(Button)findViewById(R.id.btnDogrula);



    btnDogrula.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
  

此类中用户的输入嵌入在tcKnoInput

            final TCKimlikNoInput tcKnoInput=new TCKimlikNoInput();
            tcKnoInput.setTcKimlikNo(Long.parseLong(txtTC.getText().toString()));
            tcKnoInput.setAd(txtAd.getText().toString());
            tcKnoInput.setSoyad(txtSoyad.getText().toString());
            tcKnoInput.setDogumYili(Integer.parseInt(txtDogumYili.getText().toString()));

            TCKimlikAsyncTask lt=new TCKimlikAsyncTask();

            try{

                lt.input=tcKnoInput;
                lt.execute("");}
            catch(NumberFormatException ex){ // handle your exception
                ex.printStackTrace();

        }
    }});

    TCKimlikNoInput tcKnoInput=new TCKimlikNoInput();
    tcKnoInput.setTcKimlikNo(Long.parseLong(txtTC.getText().toString()));
    tcKnoInput.setAd(txtAd.getText().toString());
    tcKnoInput.setSoyad(txtSoyad.getText().toString());
    tcKnoInput.setDogumYili(Integer.parseInt(txtDogumYili.getText().toString()));

}
  

感谢您的回答。但我在其他课程中遇到了新的错误.Class'代码在下面

public class TCKimlikAsyncTask extends AsyncTask<String,Void,String>{

public TCKimlikNoInput input;
public boolean sonuc=false;

@Override
protected String doInBackground(String... params) {
    // TODO Auto-generated method stub

    WebServiceCaller i=new WebServiceCallerImpl();
    sonuc=i.TcKimlikNoDogrula(input);

    return "";
}

@Override
protected void onPostExecute(String result) {

Toast.makeText(getApplicationContext(),&#34; Dogrulama Sonucu:&#34; + sonuc,Toast.LENGTH_LONG).show();

}

private Context getApplicationContext() {
    // TODO Auto-generated method stub
    return null;
}}
  

然后错误;

onPostExecute中的java.lang.NullPointerException在此类

  

对于最后一个错误,实际上我不应该创建getApplicationContext(),但是在解析器中看不到它

4 个答案:

答案 0 :(得分:6)

因为某些输入可能是空的,并且您试图在Long中解析它。所以在解析之前只需检查你的字符串值

String kimlikNo = txtTC.getText().toString().trim();
if(!kimlikNo.equals(""))
{
tcKnoInput.setTcKimlikNo(Long.parseLong(kimlikNo));
}

答案 1 :(得分:2)

尝试这样,

String kimlikNo = txtTC.getText().trim();
if(!kimlikNo.isEmpty())
{
   tcKnoInput.setTcKimlikNo(Long.parseLong(kimlikNo.toString()));

答案 2 :(得分:0)

EditText txtTC add in xml inputType =“number”

<EditText
        android:id="@+id/edittext_tc"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="number" />

答案 3 :(得分:0)

不是直接将“txtTC.getText()。toString()”解析为“long类型”,而是首先尝试检查EditText是否为空,然后将其解析为long。 因为你无法将空字符串解析成长类型。

替换

tcKnoInput.setTcKimlikNo(Long.parseLong(txtTC.getText().toString()));

String kimlikNo = txtTC.getText().toString().trim();
if(!kimlikNo.isEmpty())
{
   tcKnoInput.setTcKimlikNo(Long.parseLong(kimlikNo));
}