0

xmlレイアウトを使用せずに、Java内で完全に作成されたRelativeLayoutがあります。画面の左側にいくつかのボタンがあります。1つのボタンをクリックして、ボタンの横に解像度/ドローアブルのデフォルトの画像を表示し、2回目のクリックで再び消えるようにします。私が試したのは可視性を切り替えることでしたが、onClick()は致命的な例外であるNullPointerExceptionを発生させます。

これはこれまでの私のコードです。picview.setVisibility(View.INVISIBLE);を設定すると、画像が正しく表示されます。手で。onClick()で何が間違っていますか?

    private ImageView picview;

        //*snip* loads of other code

    //Show Image Button
    ImageButton show_pic = new ImageButton(this);
    show_pic.setBackgroundColor(Color.WHITE);
    show_pic.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v) {
            if(picview.getVisibility() == View.INVISIBLE)
             {
             picview.setVisibility(View.VISIBLE);
             } 
            else if (picview.getVisibility() == View.VISIBLE)
             {
             picview.setVisibility(View.INVISIBLE);
             }          
            }

    });

    params = new RelativeLayout.LayoutParams(40, 40);
    params.topMargin = 10;
    params.leftMargin = 10;
    params.addRule(RelativeLayout.BELOW, button2_id);
    rl.addView(show_pic, params);

    //Imageview loaded from drawable
    ImageView picview = new ImageView(this);
    params = new RelativeLayout.LayoutParams(200, 400);
    params.topMargin = 0;
    params.leftMargin = 30;
    params.addRule(RelativeLayout.RIGHT_OF, button2_id);
    picview.setImageResource(R.drawable.my_image);
    picview.setVisibility(View.INVISIBLE);
    rl.addView(picview, params);

    this.setContentView(rl);
4

2 に答える 2

2

の 2 つのコピーを誤って作成していpicviewます。この行を短くします:

ImageView picview = new ImageView(this);

に:

picview = new ImageView(this);

(フィールド変数private ImageView picview;は から変更されていないnullため、ボタンをクリックすると NullPointerException が表示されます...)

于 2012-11-11T23:29:38.920 に答える