Pasar datos de una actividad a otra usando paquetes, no exhibiéndose en la segunda actividad

Actualmente estoy tratando de tomar los datos adquiridos a través de una llamada a la API REST, analizar la información que necesito y luego pasar esa información a una nueva actividad. Estoy usando el Cliente HTTP Asincrónico de loopj.com para el cliente REST, y luego usando el código a continuación para mi onClick y onCreate para las actividades actuales y futuras, respectivamente.

Eclipse no me pasa ningún error por ninguno de mis códigos, pero cuando bash ejecutarlo en el emulador, no obtengo nada (es decir, una pantalla blanca en blanco) cuando se abre la nueva actividad / vista. Intenté codificar con una URL diferente en mi CLIENTE DE REST, pero todavía no veo nada. Incluso saqué la API de la ecuación al comentar el try / catch en onClick y cambiar el venueName en bundle.putString("VENUE_NAME", venueName); para searchTerm . Aún así, aparece la nueva vista, pero no se muestra nada. ¿Qué no se está pasando, o qué estoy olvidando para hacer que la segunda actividad muestre el venueName ?

 public void onClick(View view) { Intent i = new Intent(this, ResultsView.class); EditText editText = (EditText) findViewById(R.id.edit_message); String searchTerm = editText.getText().toString(); //call the getFactualResults method try { getFactualResults(searchTerm); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } //Create the bundle Bundle bundle = new Bundle(); //Add your data from getFactualResults method to bundle bundle.putString("VENUE_NAME", venueName); //Add the bundle to the intent i.putExtras(bundle); //Fire the second activity startActivity(i); } 

Método en la segunda actividad que debe recibir el bash y el paquete y mostrarlo:

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Get the message from the intent //Intent intent = getIntent(); //String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); //Get the bundle Bundle bundle = getIntent().getExtras(); //Extract the data… String venName = bundle.getString(MainActivity.VENUE_NAME); //Create the text view TextView textView = new TextView(this); textView.setTextSize(40); textView.setText(venName); //set the text view as the activity layout setContentView(textView); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { getActionBar().setDisplayHomeAsUpEnabled(true); } } 

Gracias por tu ayuda. Muy apreciado.

Dos formas en que puede enviar los datos. Así es como lo estás enviando en este momento. Y no hay nada de malo en eso.

 //Create the bundle Bundle bundle = new Bundle(); //Add your data from getFactualResults method to bundle bundle.putString("VENUE_NAME", venueName); //Add the bundle to the intent i.putExtras(bundle); startActivity(i); 

Sin embargo, en su código (segunda actividad), se refiere a la key en el paquete como MainActivity.VENUE_NAME pero nada en el código sugiere que tenga una clase que devuelva el valor como el nombre de la key real que se envía con el paquete. Cambie su código en la segunda Actividad a esto:

 Bundle bundle = getIntent().getExtras(); //Extract the data… String venName = bundle.getString("VENUE_NAME"); //Create the text view TextView textView = new TextView(this); textView.setTextSize(40); textView.setText(venName); 

Puede verificar su segunda actividad si el paquete contiene la clave con esto y sabrá que la key no está presente en el paquete. La corrección anterior, sin embargo, hará que funcione para usted.

 if (bundle.containsKey(MainActivity.VENUE_NAME)) { .... } 

Creo que si reemplazas

 String venName = bundle.getString(MainActivity.VENUE_NAME); 

con

 String venName = bundle.getString("VENUE_NAME"); 

deberia de funcionar.

Así es como manejo mi transferencia de datos de una actividad a otra:

Enviar datos a la actividad llamada “ProjectViewoptions”:

 Bundle b = new Bundle(); b.putString("id", str_projectid); Projectviewoptions pv = new Projectviewoptions(); 

Recibiendo información:

 idbundle = getArguments(); String myid = idbundle.getString("id"); 

La “llave” en ambos lados debe ser la misma; en este caso “id”.

Otra forma de enviar datos, a través de la intención es:

Enviar:

 Intent intent = new Intent(getActivity(),ViewProjectDetails.class); intent.putExtra("id", myid); startActivity(intent); 

Recibir:

 String id = getIntent().getExtras().getString("id"); 

Está accediendo incorrectamente a la clave que ha agregado en el paquete. Además de obtener la cadena como MainActivity.VENUE_NAME intente pasar directamente el nombre de la clave que ha agregado en el paquete de la siguiente manera:

Además de obtener la secuencia de la siguiente manera:

  //Get the bundle Bundle bundle = getIntent().getExtras(); //Extract the data… String venName = bundle.getString(MainActivity.VENUE_NAME); 

Intenta obtener la cadena usando el nombre de la clave como se muestra a continuación:

  /Get the bundle Bundle bundle = getIntent().getExtras(); //Extract the data… String venName = bundle.getString("VENUE_NAME"); 

para enviar paquete.

 Bundle bundle = new Bundle(); bundle.putString("Name",Object); //This is for a String i.setClass(CurrentClass.this, Class.class); i.putExtras(bundle); startActivity(i); 

recibir paquete

 Bundle bundle = null; bundle = this.getIntent().getExtras(); String myString = bundle.getString("Name");//this is for String 

Asegúrese de que la cadena que utilizó como clave para colocar el elemento en su paquete sea la misma que la utilizada para extraerla. En tu caso, quizás MainActivity.VENUE_NAME no sea lo mismo que “VENUE_NAME”

 Intent loginIntent = new Intent(LoginActivity.this, HomeActivity.class); Bundle bundle = new Bundle(); bundle.putString("user_id", userId); i.putExtras(bundle); startActivity(loginIntent); LoginActivity.this.finish();