Tengo una clase llamada MyPrimaryClass, esta clase tiene un botón de la bruja cuando se pulsa, se crea un objeto de la clase myClassForResult.

Puedo usar esto para empezar:

startActivityForResult(myIntentOfMyClassForResult, ACTIVITY_EDIT_BTEXT);

Tanto MyPrimaryClass, y myClassForResult se extiende la Actividad.

Así que, cuando me llaman Tostadas.makeText dentro de la myClassForResult, con el parámetro de texto de R. string.my_resource_string, me da Forzar Cierre!

He intentado esto:

Context c = myClassForResult.this;
Toast toast = Toast.makeText(c,
    c.getResources().getString(R.string.my_resource_string),
    Toast.LENGTH_SHORT);
toast.show();

También esto: c = getApplicationContext()

También esto: c = getBaseContext()

También esto:

Context c = MyPrimaryClass.this;
Toast toast = Toast.makeText(c,
    R.string.my_resource_string,
    Toast.LENGTH_SHORT);
toast.show();

Si puedo usar una línea de cadena, como «Mi brindis de Texto!», funciona. Pero necesito un string a partir de los recursos.

-Problema resuelto:

Para solucionar el problema he cambiado la duración de la Tostada de pan Tostado.LENGTH_LONG

La cadena R. string.my_resource_string valor es «El título está vacía»

Cuando yo cambie su valor a «El título», funcionó correctamente, así que supongo que la cadena es demasiado larga para el Brindis.LENGTH_SHORT duración.

Pero cuando puedo cambiar la duración de Tostadas.LENGTH_LONG, podría utilizar la cadena larga.

Context c = MyPrimaryClass.this;
Toast toast = Toast.makeText(c,
    R.string.my_resource_string,
    Toast.LENGTH_LONG);
toast.show();
  • post el logcat de error en la fuerza de cierre.
  • este es el logcat de error: android.contenido.res.Recursos$NotFoundException: String resource ID #0x7f04000a
  • Puede usted explicar el significado de por qué se está utilizando las dos clases de eso?
  • Causa una clase es una lista de elementos, que es la segunda clase es para la edición de los artículos…
  • No escriba la respuesta en el cuerpo de la pregunta, mejor crear nueva respuesta y aceptarlo 🙂
  • Lo siento, no podía responder a mí mismo, porque soy nuevo en stackoverflow, no me permite hacer eso. 🙂

InformationsquelleAutor DMF | 2012-02-05

4 Comentarios

  1. 2

    Una cosa a tener en cuenta:

    Toast toast = Toast.makeText(c,
        c.getResources().getString(R.string.my_resource_string),
        Toast.LENGTH_SHORT);
    toast.show();

    Se puede simplificar en:

    Toast.makeText(c,
        c.getResources().getString(R.string.my_resource_string),
        Toast.LENGTH_SHORT).show();

    Esto le ahorra un objeto de referencia que usted no necesita.

    Una cosa que usted necesita entender es que cada vez que haga referencia R en su paquete (no android.R.) usted tendrá acceso a los recursos como el tiempo que han Contexto.

    Actualización

    Después de darse cuenta de lo que usted está usando esto para que recomendamos que
    cambiar su enfoque
    , mientras que este es de hecho posible, su enfoque no es lo ideal para algo tan simple.

    El método startActivityForResult(xx) es normalmente cuando se desea iniciar una aplicación que está fuera de su paquete para un resultado.

    Por ejemplo: si quería recuperar un código de barras de un producto, a continuación, me gustaría empezar una Intención de que clase de código de barras, indirectamente a través de una acción. A continuación, me gustaría recuperar los datos mediante el uso de onActivityResult(xx).

    hace Ningún Sentido para hacer esto para su propia clase.

    • Esta no es la respuesta que el hombre !
    • mi respuesta es siempre en la parte inferior.
    • Yo poco sabía, pero estoy aprendiendo programación en Android todavía, así que he intentado publicar un código simple, evitando hacer algún noob error 🙂
    • Por favor, lea mis actualizaciones @DMF
    • Gracias @JoxTraex, pero ¿cómo puedo recuperar un resultado a partir de una clase de mi propia, el no uso de startActivityForResult?
    • Depende de los datos. ¿Qué es? @DMF
    • Es una matriz de Enteros
    • Hay una razón por qué no se puede mantener que la matriz de enteros en su clase actual? o de la tienda tal vez en una base de datos?
    • El secundario de la Clase a la que llama hace que la matriz de enteros, a continuación, volver a la clase de la primaria. No voy a crear una tabla de base de datos sólo para resolver un problema con un simple brindis de texto..
    • Considere la posibilidad de hacer la matriz de enteros en su clase actual y, a continuación,.
    • Mira lo que acaba de suceder, la cadena que estoy tratando de conseguir a partir de los recursos es: R. string.empty_title. He cambiado a cualquier otro recurso de cadena como R. string.testing_title, funcionó!
    • >_> error de usuario lols.
    • pero, ¿qué pasa? lo que es incorrecto el uso de «empty_title»?
    • Algo que podría haber ido mal con su R o no se actualizará correctamente. Esto sucede todo el tiempo, el truco es comprobar la referencia y, a continuación, la limpieza de su proyecto.
    • el valor de R. string.empty_title es «El título está vacía». He cambiado a «El título», funcionó! Así que el problema es la longitud del texto. Lo que el infierno…
    • He cambiado la duración de pan Tostado.LENGTH_LONG. Problema resuelto.
    • actualizar el post original.
    • De verdad? Android de la Fuerza, se Cierra la aplicación, si usted le da un largo (4 palabras) de la cadena, y no dar tiempo suficiente para que el usuario lo vea?!
    • por qué no usar simplemente R.string.text en el campo de cadena de caracteres, que trabaja conmigo

  2. 3

    Tratar:

    Toast.makeText(this, this.getString(R.string.my_resource_string), Toast.LENGTH_SHORT);
    • el esto no es válido, puede provocar que el código está dentro de un Ver.OnClickListener
    • Obtener una referencia a MyPrimaryClass y uso MyPrimaryClass.getString(R. string.my_resources_string)
    • Hice esto: Contexto c = MyPrimaryClass.este; luego c.getString(R. string.my_resources_string)
    • sí, usted debe usar el contexto en general no esta
  3. 2

    @dilipkaklotar Respondió correctamente, pero un par de cambios que hay que hacer:

    esta es la forma en que trabajó para mí

    Toast.makeText(getApplicationContext(),
    getApplicationContext().getResources().getString(R.string.message),
    Toast.LENGTH_SHORT).show();

    la getResources no tiene paréntesis ().
    y al final es .show(); no llegar allá().

    pero es correcta. así que muchas gracias.

  4. 0
    Toast.makeText(getApplicationContext(), getApplicationContext().getResources.getString(R.string.imgval), Toast.LENGTH_SHORT).toShow();

Dejar respuesta

Please enter your comment!
Please enter your name here