在 LinearLayout 中动态创建多个 TextView

Dynamically Creating Multiple TextViews in LinearLayout

我想在 LinearLayout 中创建多个 TextView。以下代码构建成功,但在 root.addView(t[i]);

行给出了 NullPointerException
public class MainActivity extends ActionBarActivity {
    TextView t[];
    LinearLayout root;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        root=(LinearLayout)findViewById(R.id.master);
        t=new TextView[10];
       LinearLayout.LayoutParams dim=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        for(int i=0;i<10;i++)
        {
            t[i]=new TextView(this);
            t[i].setLayoutParams(dim);
            t[i].setText("YOHOHO: "+i);
            root.addView(t[i]);
        }
        setContentView(root);
    }

这真的没有目的我只是想学习东西!

由于您未正确设置 activity 布局,因此出现 NPE。

这样做

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.whereLinearLayoutMasterIs); // Add your layout here
    root=(LinearLayout)findViewById(R.id.master);
    t=new TextView[10];
   LinearLayout.LayoutParams dim=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    for(int i=0;i<10;i++)
    {
        t[i]=new TextView(this);
        t[i].setLayoutParams(dim);
        t[i].setText("YOHOHO: "+i);
        root.addView(t[i]);
    }
}

注意R.layout.whereLinearLayoutMasterIs 是指示性的,使用 R.id.master

的布局

问题是 root 为空 - 这是因为您尚未通过 setContentView 设置 Activity 的内容视图。 你需要做这样的事情:

super.onCreate(...); setContentView(R.layout.yourLayoutName); root=(LinearLayout)findViewById(R.id.master);