Problemas con un toast

223 views
Skip to first unread message

Rober

unread,
Sep 10, 2011, 4:30:23 PM9/10/11
to desarrollad...@googlegroups.com
Hola a todos:

Vereis estoy atascado con lo que creo que es una tontería, pero no consigo ver porque no me sale. Os cuento:
Tengo en mente crearme un Activity que en el onCreate haga lo necesario para mostrar un mensaje en pantalla, lo estoy haciendo con la clase Toast . Bien pues intento llamarla desde otra clase cuando la lógica de negocio hace que se guarde un fichero. Pero no consigo que se llame y el mensaje es que no encuentra la clase  y me pregunta si la he registrado en el manifest.
Bien veo dos cosas que no me cuadran, una que no esté lanzando la clase bien(ahora os pongo un poco de código) y otra que en el manifest no la encuentra porque esta clase nueva se encuentra en un paquete distinto al que tiene declarado el manifest y me parece que se podran definir distintas clases en distintos paquetes, no?

Aqui llamo a la clase de que hace el toast:

  Intent i=new Intent();
  i.setClassName("util", "DialogStandar");
.
.
.
OutputStream os = new FileOutputStream(f);
                                   mBitmap.compress(Bitmap.CompressFormat.PNG, 90, os);
                                   os.close();
                                  startActivity(i);

Y la clase DialogStandar en el oncreate tiene lo necesario para crear el toast.

Como veréis en " i.setClassName("util", "DialogStandar");" esta clase está dentro del paquete util que está al nivel de src, el android manifest está así(esto creo que es lo que se hace mal)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="paquete1.paquetehijo"
      android:versionCode="1"
      android:versionName="1.0">
     <uses-permission
        android:name="android.permission.WRITE_EXTERNAL_STORAGE">
    </uses-permission>
    <uses-sdk android:minSdkVersion="10" />
    <application android:icon="@drawable/icon" android:label="@string/app_name" >
        <activity android:name=".xxxxxxMain"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".xxxxxx" android:configChanges="orientation"
                  android:label="@string/app_name" android:screenOrientation="landscape">
            <intent-filter>
           
                <action android:name="android.intent.action.xxxxxx" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".DialogStandar" >
             <intent-filter>
                <action android:name="android.intent.action.dialogstandar" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>


Gracias por las posibles ayudas. Un saludaco!! ;)

Juan de Dios Maldonado Sánchez

unread,
Sep 10, 2011, 4:35:38 PM9/10/11
to desarrollad...@googlegroups.com
Tal y como estás haciendo, es mejor crear el Intent:

Intent i = new Intent(getApplicationContext(), ElNombreDeTuClaseActivity.class);

y usas ese Intent.

2011/9/10 Rober <rram...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/desarrolladores-android/-/wdoeGhBCdEAJ.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.



--
An'Brain - Prueba el nuevo widget inteligente para tu Android.
Idiotizer Free - Idiotiza a tus amigos. (Se requieren auriculares)

Rober

unread,
Sep 10, 2011, 4:40:58 PM9/10/11
to desarrollad...@googlegroups.com
Gracias Juande,
Tengo tanto lio mental que no se si lo he probado así, pero algo así creo que lo hice. Bueno el caso que me resito a hacer este código:
Context context = getApplicationContext();
            CharSequence text = "Cojones grandes y eso";
            int duration = Toast.LENGTH_SHORT;

            Toast toast = Toast.makeText(context, text, duration);
            toast.show();
,que me funciona, por cada mensaje que quiera sacar por pantalla, me quiero currar una clase a la que pueda pasar el texto y con instanciarla y lanzarla basta. Pruebo ahora lo tuyo y te cuento.
Gracias tio, ;)

Rober

unread,
Sep 10, 2011, 4:50:20 PM9/10/11
to desarrollad...@googlegroups.com
Nada me dice lo mismo que no encuetra la activity y que si la he declarado en el AndridManifest. El caso es veo que cuando se instancia el intent
Intent i = new Intent(getApplicationContext(), DialogStandar.class);
el getApplicationContext nos da el paquete donde está la clase en la que se instacia que en mi caso es distinto al paquete en el que está instanciado el toast por eso creo que no la encuetra o porque no se como declara la actrivity nuevoa en el manifest con distinto empaquetado. Vamos algo así

src
 
         -clase1(desde instancio el intent para lanzar la activity que contiene la implementación del toast)
   paqueteUtil
         -claseQueTieneElToast.

Este es el mensaje del logcat, fijate que la clase la va a buscar a paquete1.hijodePaquete1 y claro está en util

09-10 20:43:56.682: ERROR/Excepción Android(873): Error al grabar imagén de firma->:Unable to find explicit activity class { paquete1.hijodePaquete1/util.DialogStandar}; have you declared this activity in your AndroidManifest.xml?



Ni idea macho! :(

Rober

unread,
Sep 10, 2011, 4:52:10 PM9/10/11
to desarrollad...@googlegroups.com
Se me ha borrado, la clase1 está dentro del paquete paquete1.hijodePaquete1. XP

Juan de Dios Maldonado Sánchez

unread,
Sep 10, 2011, 6:01:56 PM9/10/11
to desarrollad...@googlegroups.com
Hola.

No merece la pena utilizar un Activity para hacer ese tipo de cosas.
¿No sería mejor que hicieras una clase con un método estático para mostrar el mensaje?

Sería algo así como: (Lo estoy escribiendo "a pelo" en el correo, así que puedo haberme equivocado en algo, pero ahí está la idea)

public class Utilidades{

    static public void mostrarMensaje(Context context, String textoAMostrar){
        Toast.makeText(context, textoAMostrar, Toast.LENGTH_SHORT).show();
    }

}

Así podrías mostrarla desde cualquier actividad escribiendo:

Utilidades.mostrarMensaje(getApplicationContext(), "Hola! Soy un Toast!");

Suerte!

2011/9/10 Rober <rram...@gmail.com>
Se me ha borrado, la clase1 está dentro del paquete paquete1.hijodePaquete1. XP

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.

Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.

Rober

unread,
Sep 10, 2011, 7:21:08 PM9/10/11
to desarrollad...@googlegroups.com
Genial !!! pues si!! a  veces me meto tanto en que quiero picar "al estilo android" que me olvido que puedo picar java puro y duro y le doy mil vueltas a algo que picando como si fuera una app web  una app desktop lo puedo solucionar,jejejeje.
Muchas gracias mañana sigo con ello y te cuento.

Un abrazo, gracias de nuevo por guiarme!!

Rober

unread,
Sep 11, 2011, 1:16:43 PM9/11/11
to desarrollad...@googlegroups.com
Bueno Juande, gracias de nuevo. Al final como tu dices no era necesario el activity y con una clase estática queda solucionado el tema.
La verdad es que me estaba encabezonado en que siempre debo utilizar Aactivitys, Services etc.. sin tener en cuenta el java mondo y lirondo.
Bueno cabezota que es uno. Muchas gracias por arrojarme luz de nuevo y un saludote!! ;)

Juan de Dios Maldonado Sánchez

unread,
Sep 11, 2011, 1:57:53 PM9/11/11
to desarrollad...@googlegroups.com
De nada... Si los desarrolladores de Android hubieran querido hacer funcionar los toast con Intents, lo hubieran hecho así. :)

Saludos.

2011/9/11 Rober <rram...@gmail.com>
Bueno Juande, gracias de nuevo. Al final como tu dices no era necesario el activity y con una clase estática queda solucionado el tema.
La verdad es que me estaba encabezonado en que siempre debo utilizar Aactivitys, Services etc.. sin tener en cuenta el java mondo y lirondo.
Bueno cabezota que es uno. Muchas gracias por arrojarme luz de nuevo y un saludote!! ;)

--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.

Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.



--
An'Brain - Prueba el nuevo widget inteligente para tu Android.
Idiotizer Free - Idiotiza a tus amigos. (Se requieren auriculares)
Track My App - Realiza un seguimiento de tus aplicaciones en el Android market.

Reply all
Reply to author
Forward
0 new messages