Home Menu

Menu



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


 
Herramientas
  #1  
Viejo 24/02/15, 15:52:35
Avatar de Zephys
Zephys Zephys no está en línea
Usuario poco activo
Mensajes: 27
 
Fecha de registro: nov 2011
Localización: Vigo
Mensajes: 27
Modelo de smartphone: Xperia SP
Tu operador: Vodafone
Mencionado: 0 comentarios
Tagged: 0 hilos
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>
Java activity principal
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);

}
}
Por un error la activity secundaria ha perdido todo el codigo que escribí, pero la aplicación la lanza correctamente con el codigo por defecto.
Muchas gracias.
Responder Con Cita


  #2  
Viejo 24/02/15, 19:08:13
Avatar de kamahl
kamahl kamahl no está en línea
Miembro del foro
Mensajes: 74
 
Fecha de registro: ago 2012
Mensajes: 74
Tu operador: Movistar
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Responder Con Cita
  #3  
Viejo 25/02/15, 19:06:55
Avatar de Zephys
Zephys Zephys no está en línea
Usuario poco activo
Mensajes: 27
 
Fecha de registro: nov 2011
Localización: Vigo
Mensajes: 27
Modelo de smartphone: Xperia SP
Tu operador: Vodafone
Mencionado: 0 comentarios
Tagged: 0 hilos
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>
JAVA
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. ");

        }
}
}
Responder Con Cita
  #4  
Viejo 25/02/15, 23:10:16
Avatar de kamahl
kamahl kamahl no está en línea
Miembro del foro
Mensajes: 74
 
Fecha de registro: ago 2012
Mensajes: 74
Tu operador: Movistar
Mencionado: 1 comentarios
Tagged: 0 hilos
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
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android

Herramientas

Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 13:26:17 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007