2010-05-07 23 views

cevap

16

Peki ... tüm görünümler, bunları oluşturan etkinliğin bir referansı olduğundan (Context), bu pencereyi referans almak için bu Context kullanabilirsiniz. Sana bazı dakika önce yazdım bu örneği gösterelim: Sonra

// main activity 
import android.app.Activity; 
import android.os.Bundle; 
public class GetWindow extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     MyView view = new MyView(this); 
     view.changeSomethingInWindow(); // keep an eye on this method 
     setContentView(view); 
    } 
} 

Görünümünüzün içeride bunu yapabilirsiniz:

// your view :D 
import android.app.Activity; 
import android.content.Context; 
import android.view.View; 
import android.view.Window; 
import android.view.WindowManager; 

public class MyView extends View{ 
    public MyView(Context context) { 
     super(context); 
    } 

    public void changeSomethingInWindow(){ 
     // get a reference of the activity 
     Activity parent = (Activity)getContext(); 
     // using the activity, get Window reference 
     Window window = parent.getWindow(); 
     // using the reference of the window, do whatever you want :D 
     window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    } 
} 

Bu durumda, ben Pencere Büyük ekran görüntülenir modunu değiştirmek . Umarım bu size yardımcı olur. Bununla başını belaya soktuğunu söyle.

+2

Cevabınız için teşekkür ederiz. Bir etkinliğe getWindow ve döküm kullanmak iyi bir fikirdi. “Window” yerine “IBinder” ın neden döndüğünü bilmiyorum. – Casebash

+1

Merhaba Casidiablo, Kodunuzla ilgili bir sorun var. Bu, yalnızca kendi kodunuzda oluşturduğunuz görünümler için, özel oluşturucunuzda kullandığınız bağlamın bir etkinlik olduğu şekilde mümkündür. Bir Listenin GetContext Yöntemini bir ListAdapter'den denedim ve bu durumda bir Etkinlik değil bir İçerik aldım. Etkinlik, İçerik'ten bir alt sınıftır. Bu, bir Etkinliğe dönüştürülemeyen bir Bağlam nesnesini alabileceğiniz anlamına gelir. Test kodum ClassCastException ile bitti. – Janusz

+76

Yanıltıcı cevap. Etkinliklerde tüm görünümler kullanılmaz! Bazı görünümler PopupMenu veya Dialog veya AppWidgetProvider'da bulunur. Cast istisnası veya yanlış Pencere alırsınız. Diyaloğun kendi penceresi vardır. Cevabınızı gözden geçirin. –

İlgili konular