0

so I got this error on Android studio


java.lang.RuntimeException: Unable to start activity ComponentInfo{com.androids.pmob4/com.androids.pmob4.MainActivity}: java.lang.NumberFormatException: empty String
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
at java.lang.Double.parseDouble(Double.java:538)
at com.androids.pmob4.MainActivity$3.init(MainActivity.java:82)
at com.androids.pmob4.MainActivity.onCreate(MainActivity.java:81)
at android.app.Activity.performCreate(Activity.java:7136)
at android.app.Activity.performCreate(Activity.java:7127)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loop(Looper.java:193) 
at android.app.ActivityThread.main(ActivityThread.java:6669) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Here's the code of the MainActivity.java


package com.androids.pmob4;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {
Button btsn;
EditText txtlat,txtlong;
String JsonURL = "https://lpmobilediff.000webhostapp.com/";
// Mendefiniskan Volley request queue yang akanmenangani URL request
RequestQueue requestQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestQueue = Volley.newRequestQueue(this);
setContentView(R.layout.activity_main);
btsn = findViewById(R.id.btns);
txtlat = (EditText) findViewById(R.id.txtlat);
txtlong = (EditText) findViewById(R.id.txtlong);

        JsonArrayRequest arrayreq = new
                JsonArrayRequest(JsonURL,
                //parameter kedua adalah Listener overrides dengan method //onResponse() dan melewatkan JSONArray sebagai parameter
    
                new Response.Listener<JSONArray>() {
                    //mengambil response dari JSON request
    
                    @Override
    
                    public void onResponse(JSONArray response) {
    
                        try {

//                            for (int i = 0; i  response.length(); i++) {

//mengambil tiap JSON object didalam JSON array
JSONObject jsonObject = response.getJSONObject(1);
// menyimpan ke dalam string dengan nama "idemp" and"namaemp",
// dan convert dalam bentuk javascript objects
String idemp = jsonObject.getString("employee_id");
String namaemp = jsonObject.getString("employee_name");
TextView textView = findViewById(R.id.textView);
textView.setText(idemp+", "+namaemp+"");
//                            }
}
catch (JSONException e) {
// jika ada error json, print ke log
e.printStackTrace();
}
}
},
// parameter terakhir overrides adalah method onErrorResponse()dan // melewatkan VolleyError sebagai sebuah parameter
new Response.ErrorListener() {
@Override
// handle error yang disebabkan Volley
public void onErrorResponse(VolleyError error)
{
Log.e("Volley", "Error");
}
}
);
// Add JSON array request "arrayreq" ke request queue
requestQueue.add(arrayreq);
btsn.setOnClickListener(new View.OnClickListener() {
double doublat = Double.parseDouble(txtlat.getText().toString());
double doublong = Double.parseDouble(txtlong.getText().toString());
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, MapsActivity.class);
intent.putExtra("INPUT_TEXTLAT", doublat);
intent.putExtra("INPUT_TEXTLONG", doublong);
startActivity(intent);
} });
}
}

The problem is in this part

       requestQueue.add(arrayreq);
        btsn.setOnClickListener(new View.OnClickListener() {       
      double doublat = Double.parseDouble(txtlat.getText().toString());        
     double doublong = Double.parseDouble(txtlong.getText().toString());  
           @Override 
            public void onClick(View view) {     
            Intent intent = new Intent(MainActivity.this, MapsActivity.class);   
              intent.putExtra("INPUT_TEXTLAT", doublat);                 intent.putExtra("INPUT_TEXTLONG", doublong);      
           startActivity(intent);             } });     }

I tried to take value of edit text and parse it to double and then intent it to other class but then this error happens, it does works with string but when I parse it to Double the error occured, Does anyone have a solution for this?

Hovercraft Full Of Eels
  • 283,665
  • 25
  • 256
  • 373
  • 1
    Apparently, `txtlat` or `txtlong` are empty. You are going to need to guard against invalid input. That could be as simple as wrapping those `parseDouble()` calls in a `try`/`catch` block and pointing out the problem to the user if you catch an exception. – CommonsWare Jan 01 '23 at 19:34

0 Answers0