安卓:错误,当我设置的ImageView的大小内编程的TableRow [英] Android : Error when i set size of imageView inside TableRow programmatically

查看:281
本文介绍了安卓:错误,当我设置的ImageView的大小内编程的TableRow的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我尝试设置我的ImageView客体的大小,我总是同样的错误:

尝试写入到外地'廉政android.view.ViewGroup $ LayoutParams.width对空对象引用

我的一块code的:

  TableLayout TL =(TableLayout)findViewById(R.id.layoutDuNiveau);
    对于(INT J = 0; J< hauteurDuNiveau; J ++){
        TR的TableRow =新的TableRow(本);
        tr.setLayoutParams(新TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT,TableLayout.LayoutParams.WRAP_CONTENT));
        的for(int i = 0; I< largeurDuNiveau;我++){
            imageViewDuNiveau [I] [J] =新ImageView的(本);
            imageViewDuNiveau [I] [J] .setImageResource(R.drawable.blanc);
            imageViewDuNiveau [I] [J] .requestLayout();
            。imageViewDuNiveau [I] [J] .getLayoutParams()宽= 20; // ERROR HERE
            。imageViewDuNiveau [I] [J] .getLayoutParams()高度= 20; // ERROR HERE
            开关(tableauDuNiveau [I] [J]){
                案件 '#':
                    imageViewDuNiveau [I] [J] .setImageResource(R.drawable.mur);
                默认:
            }
            tr.addView(imageViewDuNiveau [I] [J]);
        }
        tl.addView(TR);
    }


解决方案

由于在这里看到:

View.getLayoutParams()


  

如果这个观点是没有连接到父此方法可能返回null
  的ViewGroup或setLayoutParams(android.view.ViewGroup.LayoutParams)是
  没有成功调用。当查看连接到父
  ViewGroup中,该方法不能返回null


要完成之前访问宽度高度 TR code>:

  tr.addView(imageViewDuNiveau [I] [J]);
。imageViewDuNiveau [I] [J] .getLayoutParams()宽= 20;
。imageViewDuNiveau [I] [J] .getLayoutParams()高度= 20;

When i try to set size of my ImageView objet, i have always same error :

Attempt to write to field 'int android.view.ViewGroup$LayoutParams.width' on a null object reference

A piece of my code :

    TableLayout tl = (TableLayout)findViewById(R.id.layoutDuNiveau);
    for(int j=0;j<hauteurDuNiveau;j++){
        TableRow tr = new TableRow(this);
        tr.setLayoutParams(new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT));
        for(int i=0;i<largeurDuNiveau;i++){
            imageViewDuNiveau[i][j] = new ImageView(this);
            imageViewDuNiveau[i][j].setImageResource(R.drawable.blanc);
            imageViewDuNiveau[i][j].requestLayout();
            imageViewDuNiveau[i][j].getLayoutParams().width = 20; // ERROR HERE
            imageViewDuNiveau[i][j].getLayoutParams().height = 20; // ERROR HERE


            switch(tableauDuNiveau[i][j]){
                case '#':
                    imageViewDuNiveau[i][j].setImageResource(R.drawable.mur);
                default:
            }
            tr.addView(imageViewDuNiveau[i][j]);
        }
        tl.addView(tr);
    }

解决方案

As see here:

View.getLayoutParams () :

This method may return null if this View is not attached to a parent ViewGroup or setLayoutParams(android.view.ViewGroup.LayoutParams) was not invoked successfully. When a View is attached to a parent ViewGroup, this method must not return null

To fix issue call add ImageView to tr before accessing width and height :

tr.addView(imageViewDuNiveau[i][j]);
imageViewDuNiveau[i][j].getLayoutParams().width = 20; 
imageViewDuNiveau[i][j].getLayoutParams().height = 20;

这篇关于安卓:错误,当我设置的ImageView的大小内编程的TableRow的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆