2014-12-19 154 views
1

我对Android非常陌生。我创建了一个示例项目,我可以显示一个Toast。现在我想在表格中显示一些数据。Android以编程方式创建TableLayout

我在onCreate方法(这里全法)尝试这样:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mNavigationDrawerFragment = (NavigationDrawerFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.navigation_drawer); 
    mTitle = getTitle(); 

    // Set up the drawer. 
    mNavigationDrawerFragment.setUp(R.id.navigation_drawer, 
      (DrawerLayout) findViewById(R.id.drawer_layout)); 

    try { 

     TableLayout table = (TableLayout) findViewById(R.id.navigation_drawer); 
      TableRow tr = new TableRow(this); 
      TextView textview = new TextView(this); 
      textview.setText("Sup"); 
      textview.setTextColor(Color.YELLOW); 

      tr.addView(textview); 

      table.addView(tr); 

     Toast.makeText(getApplicationContext(), "Well Done on getting the data", Toast.LENGTH_LONG).show(); 

    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

这里是我的fragment_main.xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/relLay" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity$PlaceholderFragment" > 

<TextView 
    android:id="@+id/section_label" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignTop="@+id/section_label" 
    android:layout_centerHorizontal="true" 
    android:text="Welcome!" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

<TableLayout 
    android:id="@+id/MyLayout1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView1" 
    android:layout_below="@+id/section_label" 
    android:layout_marginLeft="18dp" 
    android:layout_marginTop="40dp" > 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 
    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 
    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 
    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" > 
    </TableRow> 
</TableLayout> 

是问题,当我运行应用程序我得到这个:

java.lang.NullPointerException 
    at com.example.helloworld.MainActivity.onCreate(MainActivity.java:115) 
    at android.app.Activity.performCreate(Activity.java:5431) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) 
    at android.app.ActivityThread.access$900(ActivityThread.java:161) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265) 

这是行115:

table.addView(tr); 

为什么表空?为什么要得到一个简单的表格显示非常困难?请帮助我..

+0

它是一个活动,或者你正在做的一个片段? – denizt

+0

显示您的onCreate方法 – Suvitruf

+0

检查setContentView方法。该布局必须包含TableLayout(MyLayout1)。 – Amsheer

回答

1

只是检查您MainActivity类已设置

setContentView(R.layout.fragment_main); 

,而不是

setContentView(R.layout.activity_main); 

有一个与你的不对了布局文件中的问题。

注意:你也有一个TableRow在xml文件中,所以不需要动态创建。如果你想动态创建,那么在你的TableLayout中添加一个表格行之前,你必须删除所有的视图。

+0

@ lulu88我早些时候告诉过你,你有错误的XML布局问题。所以只需将其更改为我的答案或将您的xml代码fragment_main.xml移动到activity_main.xml文件。所以你会解决你的问题。导致它抛出空指针。 – RockStar

+0

谢谢:)! – lulu88

+0

@ lulu88你好,欢迎光临。很高兴帮助你! – RockStar

-1

您是否尝试设置TableRow ID属性?