2012-02-20 77 views
1

我在我的項目中定義了一個新的活動,並且我在fullScreen中遇到了一些問題。活動並不全屏顯示

我喜歡這個清單文件中定義:

<activity android:name=".Test" 
    android:launchMode="singleInstance" android:screenOrientation="portrait" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    ............. 
> 

如果我開始從另一個活動的活動,我得到了想要的全屏幕。問題是,當我從廣播接收器開始這個活動 - 我需要打開一個BroadcastReceiver這樣的事情這裏面活動:

public void onReceive(Context context, Intent intent) { 
    Intent test = new Intent(context, Test.class); 
    test.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(test); 
} 

我想這樣太:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
     WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    setContentView(R.layout.test); 
} 

,並沒有全屏如果該活動從我的BroadcastReciever開始。

爲什麼我沒有在這種情況下獲得全屏?活動創建並可見後,有什麼方法可以請求全屏?

回答

2

我喜歡這個問題。有一種方法我省略了在問題文本中添加 - 我沒有認爲它是相關的。因爲我想這個活動攔截(不反應)home鍵按下,基於這個原因,我重寫onAttachedToWindow()方法是這樣的:

public void onAttachedToWindow() { 
    getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
    super.onAttachedToWindow(); 
} 

這裏是問題。有時候,由於這個原因,我的活動沒有全屏顯示。爲了解決這個問題,我不知道這是不是最好的方式,我加了延遲這段代碼,像這樣:

public void onAttachedToWindow() { 
    handler.sendEmptyMessageDelayed(100,100); 
    super.onAttachedToWindow(); 
} 

和處理程序:

public boolean handleMessage(Message msg) { 
    getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
} 

,這解決了我的問題。我希望這可以幫助別人!