Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid: Inserting space in an edittext causes a crash
    primarykey
    data
    text
    <p>My edit text serves as a search box, and I am getting movies from rotten tomatoes API, using the text inside my edit text, problem is. when a space is inserted the application crashes, I am assuming that I need to convert the spaces into +'s, but I have no clue how where to add this code or how exactly, I hope someone here will be able to help me. </p> <p>this is my code:</p> <pre><code> private TextView searchBox; private Button bGo, bCancelAddFromWeb; private ListView moviesList; public final static int ACTIVITY_WEB_ADD = 3; public List&lt;String&gt; movieTitles; public List&lt;String&gt; movieSynopsis; public List&lt;String&gt; movieImgUrl; private ProgressDialog pDialog; // the Rotten Tomatoes API key private static final String API_KEY = "8q6wh77s65a54w433cab9rbsq"; // the number of movies to show private static final int MOVIE_PAGE_LIMIT = 8; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.movie_add_from_web); InitializeVariables(); } /* * Initializing the variables and creating the bridge between the views from * the xml file and this class */ private void InitializeVariables() { searchBox = (EditText) findViewById(R.id.etSearchBox); bGo = (Button) findViewById(R.id.bGo); bCancelAddFromWeb = (Button) findViewById(R.id.bCancelAddFromWeb); moviesList = (ListView) findViewById(R.id.list_movies); bGo.setOnClickListener(this); bCancelAddFromWeb.setOnClickListener(this); moviesList.setOnItemClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bGo: new RequestTask() .execute("http://api.rottentomatoes.com/api/public/v1.0/movies.json?apikey=" + API_KEY + "&amp;q=" + searchBox.getText() + "&amp;page_limit=" + MOVIE_PAGE_LIMIT); break; case R.id.bCancelAddFromWeb: finish(); break; } } private void refreshMoviesList(List&lt;String&gt; movieTitles) { moviesList.setAdapter(new ArrayAdapter&lt;String&gt;(this, android.R.layout.simple_list_item_1, movieTitles .toArray(new String[movieTitles.size()]))); } private class RequestTask extends AsyncTask&lt;String, String, String&gt; { // make a request to the specified url @Override protected String doInBackground(String... uri) { HttpClient httpclient = new DefaultHttpClient(); HttpResponse response; String responseString = null; try { // make a HTTP request response = httpclient.execute(new HttpGet(uri[0])); StatusLine statusLine = response.getStatusLine(); if (statusLine.getStatusCode() == HttpStatus.SC_OK) { ByteArrayOutputStream out = new ByteArrayOutputStream(); response.getEntity().writeTo(out); out.close(); responseString = out.toString(); } else { // close connection response.getEntity().getContent().close(); throw new IOException(statusLine.getReasonPhrase()); } } catch (Exception e) { Log.d("Test", "Couldn't make a successful request!"); } return responseString; } // if the request above completed successfully, this method will // automatically run so you can do something with the response @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(MovieAddFromWeb.this); pDialog.setMessage("Searching..."); pDialog.show(); } @Override protected void onPostExecute(String response) { super.onPostExecute(response); try { // convert the String response to a JSON object JSONObject jsonResponse = new JSONObject(response); // fetch the array of movies in the response JSONArray jArray = jsonResponse.getJSONArray("movies"); // add each movie's title to a list movieTitles = new ArrayList&lt;String&gt;(); // newly added movieSynopsis = new ArrayList&lt;String&gt;(); movieImgUrl = new ArrayList&lt;String&gt;(); for (int i = 0; i &lt; jArray.length(); i++) { JSONObject movie = jArray.getJSONObject(i); movieTitles.add(movie.getString("title")); movieSynopsis.add(movie.getString("synopsis")); movieImgUrl.add(movie.getJSONObject("posters").getString( "profile")); } // refresh the ListView refreshMoviesList(movieTitles); } catch (JSONException e) { Log.d("Test", "Couldn't successfully parse the JSON response!"); } pDialog.dismiss(); } } @Override public void onItemClick(AdapterView&lt;?&gt; av, View view, int position, long id) { Intent openMovieEditor = new Intent(this, MovieEditor.class); openMovieEditor.putExtra("movieTitle", movieTitles.get(position)); // newly added openMovieEditor.putExtra("movieSynopsis", movieSynopsis.get(position)); openMovieEditor.putExtra("movieImgUrl", movieImgUrl.get(position)); openMovieEditor.putExtra("callingActivity", ACTIVITY_WEB_ADD); startActivityForResult(openMovieEditor, ACTIVITY_WEB_ADD); } } </code></pre> <p>this is the log with the error:</p> <pre><code>01-14 20:19:19.591: D/Test(907): Couldn't make a successful request! 01-14 20:19:19.690: D/AndroidRuntime(907): Shutting down VM 01-14 20:19:19.700: W/dalvikvm(907): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 01-14 20:19:19.801: E/AndroidRuntime(907): FATAL EXCEPTION: main 01-14 20:19:19.801: E/AndroidRuntime(907): java.lang.NullPointerException 01-14 20:19:19.801: E/AndroidRuntime(907): at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116) 01-14 20:19:19.801: E/AndroidRuntime(907): at org.json.JSONTokener.nextValue(JSONTokener.java:94) 01-14 20:19:19.801: E/AndroidRuntime(907): at org.json.JSONObject.&lt;init&gt;(JSONObject.java:154) 01-14 20:19:19.801: E/AndroidRuntime(907): at org.json.JSONObject.&lt;init&gt;(JSONObject.java:171) 01-14 20:19:19.801: E/AndroidRuntime(907): at il.jb.projectpart2.MovieAddFromWeb$RequestTask.onPostExecute(MovieAddFromWeb.java:152) 01-14 20:19:19.801: E/AndroidRuntime(907): at il.jb.projectpart2.MovieAddFromWeb$RequestTask.onPostExecute(MovieAddFromWeb.java:1) 01-14 20:19:19.801: E/AndroidRuntime(907): at android.os.AsyncTask.finish(AsyncTask.java:631) 01-14 20:19:19.801: E/AndroidRuntime(907): at android.os.AsyncTask.access$600(AsyncTask.java:177) 01-14 20:19:19.801: E/AndroidRuntime(907): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 01-14 20:19:19.801: E/AndroidRuntime(907): at android.os.Handler.dispatchMessage(Handler.java:99) 01-14 20:19:19.801: E/AndroidRuntime(907): at android.os.Looper.loop(Looper.java:137) 01-14 20:19:19.801: E/AndroidRuntime(907): at android.app.ActivityThread.main(ActivityThread.java:4745) 01-14 20:19:19.801: E/AndroidRuntime(907): at java.lang.reflect.Method.invokeNative(Native Method) 01-14 20:19:19.801: E/AndroidRuntime(907): at java.lang.reflect.Method.invoke(Method.java:511) 01-14 20:19:19.801: E/AndroidRuntime(907): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 01-14 20:19:19.801: E/AndroidRuntime(907): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 01-14 20:19:19.801: E/AndroidRuntime(907): at dalvik.system.NativeStart.main(Native Method) </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload