![]() |
|
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
«
Tema Anterior
|
Siguiente tema
»
|
Herramientas |
#1
|
||||
|
||||
Mostrar datos guardados en activity principal en la secundaria
Buenas tardes. Estoy desarrollando una aplicación que guarda datos en un fichero a traves de un boton. Tengo un boton que se llama "listar" que muestra a información guardada en la activity principal en un spinner en la segunda activity. La primera activity está completa y el boton lanza la segunda, lo que no consigo es que el spinner vaya mostrando los datos que se guardaron en la primera activity. ¿Alguien tiene alguna solución a esto? Os dejo el codigo de la activity principal ya terminada.
Xml layout principal Código:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="2dp" > <EditText android:id="@+id/etTexto" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Introduce el nombre de un instrumento" android:inputType="textMultiLine" /> <CheckBox android:id="@+id/cbSobrescribir" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Sobreescribir" /> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:stretchColumns="*" > <TableRow> <Button android:id="@+id/bEscribirEngadir" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onEscribirEngadirClick" android:text="Añadir/\nSobreescribir" /> <Button android:id="@+id/bListar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onListarClick" android:text="Listar\n" /> <Button android:id="@+id/bBorrar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onBorrarClick" android:text="Borrar\n" /> </TableRow> </TableLayout> <ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/tvMostrar" android:layout_width="match_parent" android:layout_height="match_parent" /> </ScrollView> </LinearLayout> Código:
package com.example.u4_instrumentos; import java.io.File; import java.io.OutputStreamWriter; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.Menu; import android.view.View; import android.widget.CheckBox; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class U4_Instrumentos extends ActionBarActivity { TextView tv; public static String nomeFicheiro = "ficheiro_interno.txt"; @override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_u4__instrumentos); tv = (TextView) findViewById(R.id.tvMostrar); } @override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.u4__instrumentos, menu); return true; } public void onEscribirEngadirClick(View v) { EditText etTexto = (EditText) findViewById(R.id.etTexto); CheckBox cbSobrescribir = (CheckBox) findViewById(R.id.cbSobrescribir); int contexto; tv.setText(""); if (cbSobrescribir.isChecked()) contexto = Context.MODE_PRIVATE; else contexto = Context.MODE_APPEND; try { OutputStreamWriter osw = new OutputStreamWriter(openFileOutput(nomeFicheiro, contexto)); osw.write(etTexto.getText() + "\n"); osw.close(); etTexto.setText(""); } catch (Exception ex) { Log.e("INTERNA", "Error escribindo no ficheiro"); } } public void onBorrarClick(View v) { File directorio_app = getFilesDir(); File ruta_completa = new File(directorio_app, "/" + nomeFicheiro); if (ruta_completa.delete()) Log.i("INTERNA", "Ficheiro borrado"); else { Log.e("INTERNA", "Problemas borrando o ficheiro"); Toast.makeText(this, "Problemas borrando o ficheiro", Toast.LENGTH_SHORT).show(); } } public void onListarClick(View v) { Intent intent = new Intent(this, Listar_Datos.class); startActivity(intent); } } Muchas gracias. ![]() ![]() |
|
#2
|
||||
|
||||
no se si te valdrá de mucho, por que no acabo de captar tu idea, pero una solución plausible es que leas el archivo, lo partas, y cada parte la añadas a un arraylist, que luego cargues en el sppiner con un simplearrayadapter
|
#3
|
||||
|
||||
Creo que yo tampoco lo expliqué bien. En la activity principal, al poner un texto, y pulsar añadir, lo guarda en un fichero .txt. En otro boton lanza una activity secundaria, que debe mostrar en un listview o en un spinner lo que se ha guardado en el fichero, es decir, si escrbo "casa", y pulso añadir, en la secundaria en el listview deberia aparecer "casa". He modificado el codigo de la activity secundaria y ahora mismo si pulso el boton "listar", muestra en un textview los valores guardados, pero querría hacerlo en un listview o spinner. El codigo de la secundaria sería:
XML Código:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="2dp" > <Button android:id="@+id/bListar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="onListarClick" android:text="Listar\n" /> <ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/tvAmosar" android:layout_width="match_parent" android:layout_height="match_parent" /> </ScrollView> </LinearLayout> Código:
package com.example.u4_instrumentos; import java.io.BufferedReader; import java.io.InputStreamReader; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.View; import android.widget.TextView; import android.widget.Toast; public class Listardatos extends ActionBarActivity { TextView tv; public static String nomeFicheiro = "ficheiro_interno.txt"; @override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_listardatos); tv = (TextView) findViewById(R.id.tvAmosar); } public void onListarClick(View v) { String linha = ""; TextView tv = (TextView) findViewById(R.id.tvAmosar); tv.setText(linha); try { BufferedReader br = new BufferedReader(new InputStreamReader(openFileInput(nomeFicheiro))); while ((linha = br.readLine()) != null) tv.append(linha + "\n"); br.close(); } catch (Exception ex) { Toast.makeText(this, "Problemas lendo o ficheiro", Toast.LENGTH_SHORT).show(); Log.e("INTERNA", "Erro lendo o ficheiro. "); } } } ![]() ![]() |
#4
|
||||
|
||||
si lees cada fila y la guardas en un array puedes usar un array adapter
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, values); y luego al listview o al spinner le añades la función setadapter(adapter) y listo |
Respuesta |
![]() |
||||||
|
«
Tema Anterior
|
Siguiente tema
»
Herramientas | |
|
|
Hora actual: 18:55:07 (GMT +2)
HTCMania: líderes desde el 2007