Pregunta

¿Qué es necesario importar o cómo puedo llamar al influencia del diseño en lugares distintos de la actividad?

public static void method(Context context){
    //this doesn't work the getLayoutInflater method could not be found
    LayoutInflater inflater = getLayoutInflater();
    // this also doesn't work 
    LayoutInflater inflater = context.getLayoutInflater();
}

Puedo llamar getLayoutInflater Solo en la actividad, ¿es eso una restricción? ¿Qué pasa si quiero crear un diálogo personalizado y quiero inflar la vista, o qué pasa si quiero tener un mensaje de tostada con una vista personalizada que se muestra desde un servicio, solo tengo el contexto del servicio no tengo ninguna actividad? Pero quiero mostrar un mensaje personalizado.

Necesito el influjo en lugares del código que no esté en la clase de actividad.

Cómo puedo hacer esto ?

¿Fue útil?

Solución

Puede usar estas actividades externas: todo lo que necesita es proporcionar un Context:

LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );

Luego, para recuperar sus diferentes widgets, infla un diseño:

View view = inflater.inflate( R.layout.myNewInflatedLayout, null );
Button myButton = (Button) view.findViewById( R.id.myButton );

Editar a partir de julio de 2014

Davide's responder Sobre cómo conseguir el LayoutInflater en realidad es más correcto que el mío (aunque todavía es válido).

Otros consejos

O ...

LayoutInflater inflater = LayoutInflater.from(context);

o

View.inflate(context, layout, parent)

Usando el objeto de contexto, puede obtener LayoutInflater desde el siguiente código

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE );

¡Usa esto en su lugar!

LayoutInflater.from(context).inflate(R.layout.row_payment_gateway_item, null);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top