it-swarm-id.com

Panggil ke getLayoutInflater () di tempat yang tidak ada aktivitas

Apa yang perlu diimpor atau bagaimana saya dapat memanggil inflater Layout di tempat lain selain aktivitas?

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();
}

Saya dapat memanggil getLayoutInflater hanya dalam aktivitas, apakah itu batasan? Bagaimana jika saya ingin membuat dialog khusus dan saya ingin mengembang tampilan untuk itu, atau bagaimana jika saya ingin memiliki pesan Toast dengan tampilan kustom yang ditampilkan dari layanan, saya hanya memiliki konteks dari layanan saya tidak memiliki kegiatan apa pun tapi saya ingin menampilkan pesan khusus.

Saya membutuhkan inflater di tempat-tempat dalam kode yang tidak ada di kelas aktivitas.

Bagaimana saya bisa melakukan ini?

172
Lukap

Anda dapat menggunakan aktivitas luar ini - yang Anda butuhkan hanyalah memberikan Context:

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

Kemudian untuk mengambil widget yang berbeda, Anda mengembang tata letak:

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

EDIT pada Juli 2014

Davide's answer tentang cara mendapatkan LayoutInflater sebenarnya lebih benar daripada milik saya (yang masih berlaku meskipun).

371
kaspermoerch

Atau ...

LayoutInflater inflater = LayoutInflater.from(context);
242
Davide

atau

View.inflate(context, layout, parent)

10
Prakash Nadar

Menggunakan objek konteks Anda bisa mendapatkan LayoutInflater dari kode berikut

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