【问题标题】:adding rows to table layout error将行添加到表格布局错误
【发布时间】:2011-12-10 15:15:38
【问题描述】:

我正在创建一个 TableLayout 并以编程方式向它添加视图。当我添加 TextView 和 Image 时,它​​工作正常。当我尝试添加 RadioGroupRadioButtons 时,它显示错误。

在我的 Xml 布局中,我在滚动视图下有表格布局,下面是我的 Java 代码:

import java.util.ArrayList;
 import android.app.Activity;
import android.app.ListActivity;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
 import android.widget.RadioButton;
import android.widget.RadioGroup;
 import android.widget.TableLayout;
 import android.widget.TextView;
import android.widget.TableRow.LayoutParams;
public class DamnitActivity extends Activity {
TableLayout makeit;
ArrayList list_name;
int color_blue = -16776961;
int color_gray = -7829368;
int color_black = -16777216;
int color_white = -1;

final int CHECK_BUTTON_ID = 982301;
int ids_check[];
boolean bool_check[];

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    makeit = (TableLayout) findViewById(R.id.tableLayout1);
    list_name = new ArrayList();

    list_name.add("Close");
    list_name.add("Cristiano");
    list_name.add("David");
    list_name.add("Fernando");
    list_name.add("Messi");
    list_name.add("Kaka");
    list_name.add("Wayne");
    list_name.add("ghse");
    list_name.add("gouse");
    list_name.add("ghuse");
    list_name.add("ghous");
    list_name.add("ouse");
    list_name.add("use");
    list_name.add("e");
    list_name.add("eff");
    list_name.add("euyr");
    list_name.add("ejjyytuty");
    list_name.add("madre");
    list_name.add("yuir");
    list_name.add("eyrty");
    list_name.add("etytr");
    list_name.add("ewrrtt");
    bool_check = new boolean[list_name.size()];
    ids_check = new int[list_name.size()];
    createTableRows();

    }

public void onListItemClick(ListView parent, View v, int position, long id){ 

    }

    public void createTableRows()
    {
    for (int i = 0; i < list_name.size(); i++)
    {

    TextView tv_name = new TextView(this);
    Button btn_check = new Button(this);
    ImageView img_line = new ImageView(this);
    RadioGroup mgroup=new RadioGroup(this); 
    RadioButton newRadioButton = new RadioButton(this);
    newRadioButton.setText("hi");

    LinearLayout.LayoutParams layoutParams = new RadioGroup.LayoutParams(
            RadioGroup.LayoutParams.WRAP_CONTENT,
            RadioGroup.LayoutParams.WRAP_CONTENT);
    mgroup.addView(newRadioButton, 0, layoutParams);



    tv_name.setText((CharSequence) list_name.get(i));
    tv_name.setTextColor(color_blue);
    tv_name.setTextSize(30);
    tv_name.setTypeface(Typeface.DEFAULT_BOLD);
    tv_name.setWidth(150);

    btn_check.setLayoutParams(new LayoutParams(30, 30));
    btn_check.setBackgroundResource(R.drawable.small_checkbox_unchecked);

    img_line.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, 2));
    img_line.setBackgroundResource(R.drawable.separater_line);

    makeit.addView(tv_name);
    makeit.addView(btn_check);
    makeit.addView(mgroup);


    int id = i + CHECK_BUTTON_ID;
    btn_check.setId(id);
    ids_check[i] = id;

    btn_check.setOnClickListener(new OnClickListener()
    {
    @Override
    public void onClick(View v)
    {
    // TODO Auto-generated method stub
    for (int j = 0; j < ids_check.length; j++)
    {
    Button btn_check_1 = (Button) findViewById(ids_check[j]);
    if(v.getId() == ids_check[j])
    if(bool_check[j])
    {
    btn_check_1.setBackgroundResource(R.drawable.small_checkbox_unchecked);
    bool_check[j] = false;
    }
    else
    {
    btn_check_1.setBackgroundResource(R.drawable.small_checkbox_checked);
    bool_check[j] = true;
    }
    }
    }
    });

    }
    }
    }

错误是:

2-10 11:40:24.120:E/AndroidRuntime(995):java.lang.RuntimeException:无法启动活动 ComponentInfo{com.pace.damnit/com.pace.damnit.DamnitActivity}:java.lang。空指针异常

【问题讨论】:

  • 你在哪一行得到 NullPointerException?
  • 在 makeit.addView(tv_name); 的 115 行显示错误但我是这个环境的新手,可能我也无法准确指出,这是
  • 12-10 12:22:20.044: E/AndroidRuntime(1102): 由: java.lang.NullPointerException : E/AndroidRuntime(1102):at com.pace.damnit.DamnitActivity.createTableRows (DamnitActivity.java:115):E/AndroidRuntime(1102):在 com.pace.damnit.DamnitActivity.onCreate(DamnitActivity.java:76):E/AndroidRuntime(1102):在 android.app.Activity.performCreate(Activity .java:4465) : E/AndroidRuntime(1102):at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 12-10 12:22:20.044: E/AndroidRuntime(1102):at android.app.ActivityThread .performLaunchActivity(ActivityThread.java:1919)

标签: android android-layout nullpointerexception


【解决方案1】:

很可能 ma​​keit TableLayout 对象为空

【讨论】:

  • 但是当我运行相同的代码而不添加无线电组时它运行正常那么可能是什么原因?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
相关资源
最近更新 更多