0

私のアプリでは、アクティビティのメイン コンテナーのサイズを知る必要があります。私は次のコードを書きました:

Button btnActionMenu = (Button) findViewById(R.id.actionbar_menu);
        btnActionMenu.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                int width = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 40, getResources().getDisplayMetrics());
                RelativeLayout rlContainer = (RelativeLayout) findViewById(R.id.inner_content);
                Bitmap bitmap = Bitmap.createBitmap(rlContainer.getLayoutParams().width, rlContainer.getLayoutParams().height, Config.ARGB_8888);//
                Canvas canvas = new Canvas(bitmap);
                rlContainer.draw(canvas);
                SlideoutHelper.setBitmap(bitmap, width);
                startActivity(new Intent(Home.this, MenuActivity.class));
                overridePendingTransition(0, 0); 
            }
        });

rlContainerアクティビティのルート コンテナーです。実行してボタンをクリックすると、アプリケーションがクラッシュし、Logcat が「Application Null pointer exception」と言って行を指します

Bitmap bitmap = Bitmap.createBitmap(rlContainer.getLayoutParams().width, rlContainer.getLayoutParams().height, Config.ARGB_8888);

任意の提案をいただければ幸いです。ありがとう

4

2 に答える 2

0

これを試して :

    v.measure(
    MeasureSpec.makeMeasureSpec(v.getLayoutParams().width,MeasureSpec.EXACTLY),
    MeasureSpec.makeMeasureSpec(v.getLayoutParams().height, MeasureSpec.EXACTLY));
    v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
    Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight()
   ,Bitmap.Config.RGB_565);
于 2012-05-12T19:19:07.460 に答える
0

getMeasuredHeight と getMeasuredWidth 、または getHeight と getWidth (rlContainer 変数で) を試しましたか?

これは、ビューが準備された後にのみ機能し、 onCreate() メソッド内では機能しないことに注意してください。ただし、ビューがユーザーに表示された後に発生するユーザー関連のアクション内にあるため、この状況でも機能します。

ところで、コードについて、「rlContainer.getLayoutParams().width」は、 wrap-content または match-parent の場合、負の値を返す可能性があります。

于 2012-05-12T20:18:27.243 に答える