Android - Compara cadenas de Intent

Esta tiene que ser una respuesta muy fácil. He estado buscando y buscando cómo comparar una variable con una cadena en Java. Tengo una intención y solo quiero declarar algunas variables si los datos de la intención coinciden. Seguramente esto no puede ser tan difícil. Java es frustrante para mí. :) Sé que el tipo será igual al mensaje en algún momento, pero no funciona. p.ej

String type = intent.getStringExtra("type");

 if(type.equals("message")){
            String msg = intent.getStringExtra("message");
            String avatar = intent.getStringExtra("photo");
            count = Integer.parseInt(intent.getStringExtra("count"));
            Bitmap photo = getBitmapFromURL(avatar);
            String theMessage = Html.fromHtml(msg).toString().replace("\\", "");
        }

EDIT:

Hice el tipo de salida para registrar como se sugiere y se muestra message como debería Estoy tratando de nosotros la misma variable theMessage y photo pero se queja de que no está declarado, por lo que solicita una solución y lo coloca en la parte superior. ¿Es esto lo que está causando que no funcione? Esta es una notificación por cierto.

private static String theMessage = null;
private static Bitmap photo = null;

Intento hacer esto más adelante en el código, pero se queja de que no se declara.

 if(type.equals("message")){
        notification.setSubText(theMessage);
        notification.setLargeIcon(photo);
        }

Entonces eso es lo que tengo y con las variables estáticas no funciona en absoluto, incluso después de que desaparece el error de no ser declarado.

preguntado el 16 de abril de 13 a las 08:04

Tipo de cadena = intent.getStringExtra("tipo"); Intente registrar el valor que está obteniendo en tipo. -

Tu comparación de cadenas está bien. Desafortunadamente, ni siquiera estás diciendo lo que no funciona para ti. Una cosa es segura, su código no es robusto; por ejemplo, si no hay un "tipo" adicional en la intención, su aplicación fallará. -

apoyando el comentario de @ClassStacker: vale la pena invertir la llamada al método: "message".equals(type) para prevenir la NPE (NullPointerException). Puede ser más confuso llamar a un método en un String constante, pero útil para hacerlo (extraer a una constante / static final String si es demasiado confuso). -

Lo que quise decir con que no funciona es que simplemente ignora la declaración porque los vars nunca se usan y la foto no se muestra. Pero como dice Class, si no hay un extra disponible, falla. Por eso quería la condición. Puedo intentar usar hasExtra() para el tipo si eso funciona y lo hace más robusto. -

@Pjack Simplemente puede seguir los consejos de TwisterRob o buscar null resultados. Si la API dice que un método puede devolver null, a menudo no es una mala idea poder lidiar con eso. -

1 Respuestas

Prueba en su lugar

Bundle extras = intent.getExtras();

String type = extras.getString("type");
Log.i("type", type);

if(type.equals("message")){
    String msg = extras.getString("message");
    String avatar = extras.getString("photo");
    count = Integer.parseInt(extras.getString("count"));
    Bitmap photo = getBitmapFromURL(avatar);
    String theMessage = Html.fromHtml(msg).toString().replace("\\", "");
}

y ver el logCat lo que viene contra el tipo.

Espero eso ayude.

Respondido 16 Abr '13, 08:04

Hola, mira mi actualización. estoy obteniendo message cuando lo logCat, pero creo que es la segunda declaración que no funciona y que es parte del generador de notificaciones. Estoy tratando de hacer la misma verificación porque no quiero usar esos parámetros a menos que escriba = message. Espero que esté claro. - Panamá Jack

Me estoy poniendo message cual es correcta. Creo que ahora conozco mi problema, pero no sé cómo solucionarlo. Por alguna razón, Java no le permitirá acceder a la variable fuera de esa declaración if. yo obtengo cannot be resolved to a variable. Pero sé que sí. Solo he tratado con Java durante menos de una semana, por lo que es difícil depurar algo de lo que sé poco. :/ - Panamá Jack

Gracias por la ayuda. Creo que lo descubrí. Necesitaba crear vars locales para Bitmap photo = null; String theMessage = null; La declaración estaba bien antes, pero la declaración final privada la estaba estropeando. Realmente tengo MUCHO que aprender con Java. Solía ​​usar PHP y cosas así parecen funcionar con eso. :) - Panamá Jack

¡No hay problema! ¡Está muy bien que lo hayas descubierto tú mismo! Lo pensé al principio, pero luego me vino a la mente que es posible que los hayas declarado en algún lugar de tu código. - Amir Moaaviah

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.