OnWindowFocusChangedとonCreate - Android

I am trying to setup the UI elements programatically.
I am able to setup the UI elements in onWindowFocusChanged method?
The question i want to ask is - shall i setup the UI elements in the onCreate method or on onWindowFocusChanged? The code -

@Override
protected void onCreate(Bundle savedInstanceState) {
   //TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.baselayout);
}

And

@Override
public void onWindowFocusChanged(boolean hasFocus) {
   //TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        res = getResources();
        inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        setUpBackgroundImage();// setting up the background image
        setUpTopMenu();//Setting up the menu on top
        setUpLogo();//Setting up the Logo
    }
}

上記のアプローチは正しいですか?

8
nl ru de
一般的に onCreate()または onStart()
追加された 著者 user948620,

2 答え

新しいデバイスの中には複数のウィンドウを表示できるものがあることに注意してください。 onWindowFocusChanged()はレイアウトを初期化するのに適していません。 onCreate()を使用してレイアウトを拡張し、View変数を設定します。

6
追加された
複数のウィンドウのシナリオでは、現在のアクティビティがフォーカスを失った場合、ビューが表示されますか?
追加された 著者 Anukool,
onWindowFocusChangedのドキュメントに従って - しかし、一般的なルールとして、再開されたアクティビティにはウィンドウフォーカスがあります...入力フォーカスを取る他のダイアログやポップアップが表示されない限り、アクティビティ自体にはフォーカスがありません窓はそれを持っている
追加された 著者 Anukool,
onCreateでUIを設定しているときに直面している問題は、ロゴを相対的な位置に設定する必要があります。これは、背景の10%のマージンです。このためには、画面の高さをプログラムで計算し、高さの10%を見つけてロゴを設定する必要があります。 onCreateでは、ビューが描画されていないため、背景画像の高さが0になっています。それが私がonWindowFocusChangedのようなメソッドを探していた理由です
追加された 著者 Anukool,
@Anukoolはい、表示される可能性があります。ここに例があります
追加された 著者 S.D.,
@Anukoolこれが onPause()の目的です。また、アクティビティは自分のビュー/ダイアログ/ポップアップが気になり、別のウィンドウについては心配しないでください。
追加された 著者 S.D.,
@Anukool onResume()を使用するか、 親の ViewGroup のonLayout() で現在のサイズに応じてその特別な子の view (ロゴ)のマージンを設定し、コード> super.onLayout()
追加された 著者 S.D.,

onCreate() This is the place where you setup your UI

onWindowFocusChanged() This is called when all your layouts or UI have been successfully loaded or created properly.

4
追加された