0

アクティビティが開始するとすぐにロードする必要がある PopUpWindow があります。これは、画面の DisplayMetrics などを使用します。ただし、「ウィンドウを追加できません -- トークン null が無効です。アクティビティは実行されていますか?」というエラーが表示されます。行のwelcome.showAtLocation(popupview2, Gravity.CENTER, 0, 0);

リソースが取得されたときにのみ PopUpWindow を表示するにはどうすればよいですか? 私の PopUpWindow はスプラッシュとして機能する (onClick で即座にフェードアウトできるようにする) ため、ウィンドウはユーザーが最初に目にするものでなければなりません。

私のコード:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

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

    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();

    dpWidth = displayMetrics.widthPixels / displayMetrics.density;

    dpHeight = displayMetrics.heightPixels / displayMetrics.density;

popupview2 = inflater.inflate(R.layout.start_layout, null);

welcome = new PopupWindow(popupview2, (int) dpWidth, (int) dpHeight);
    welcome.setAnimationStyle(R.style.Animation2);

    welcome.showAtLocation(popupview2, Gravity.CENTER, 0, 0);

}

基本的に、私が使用できる「onResourcesLoaded」のようなものはありますか? すべての助けに感謝します。

4

1 に答える 1

0

コードが呼び出されたとき、システムはメトリックを測定する準備ができていません

すべてのコードをこのメソッドに移動します:

@Override
public void onAttachedToWindow() {
    // TODO Auto-generated method stub
    super.onAttachedToWindow();

}

このメソッドは、アクティビティが完全に表示されたためにすべてのメトリックを使用できるようになったときに呼び出されます。

于 2014-06-20T12:12:27.693 に答える