Android - TableRow未添加到片段中的TableLayout

时间:2015-01-18 18:36:10

标签: android android-fragments android-tablelayout tablerow

我有一个带有TableLayout的活动,现在我正在将带有表的部分更改为片段。我正在尝试从该片段内部动态地向TableLayout添加行。我为TableRow添加了一个布局,我尝试对其进行充气,设置数据并将其添加到表中。

当我在activity中进行此操作时。现在,当我将表格的一部分移动到fragment时,它不起作用,表格所在的部分仍然是空白的,就像那里什么也没有。

活动中的代码:

    private void AddNewRowToTable(String string1, String string2)
    {
        // Inflate your row "template" and fill out the fields.
        TableRow row = (TableRow)LayoutInflater.from(this).inflate(R.layout.table_row, null);
        ((TextView)row.findViewById(R.id.textViewName1)).setText(string1);
        ((TextView)row.findViewById(R.id.textViewName2)).setText(string2);
        row.setOnClickListener(_rowOnClickListener);
        table.addView(row);
    }

并定义了表var:

table = (TableLayout)findViewById(R.id.tableLayoutWorkers);

这是在片段中不起作用的代码:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    {
        this.containingActivity = getActivity();
        this.inflater = inflater;
        currentFragmentView = inflater.inflate(R.layout.fragment_show_statistics, null);
        table = (TableLayout)currentFragmentView.findViewById(R.id.tableLayoutWorkers);        
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_show_statistics, container, false);
    }

方法的一个小改动:

private void AddNewRowToTable(String string1, String string2)
    {
        // Inflate your row "template" and fill out the fields.
        TableRow row = (TableRow)inflater.inflate(R.layout.table_row, null);
        //all the rest is the same
    }

由于我是新手,我不确定何时应该使用View,何时应该使用ContextViewGroup以及原因。

你知道为什么桌子没有被填满吗?

1 个答案:

答案 0 :(得分:0)

在你的oncreateView方法中,你会膨胀两个fragment_show_statistics,你会返回一个,另一个你找到该表。

所以你需要返回你找到该表的那个。

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{
    this.containingActivity = getActivity();
    this.inflater = inflater;
    currentFragmentView = inflater.inflate(R.layout.fragment_show_statistics, null);
    table = (TableLayout)currentFragmentView.findViewById(R.id.tableLayoutWorkers);        
    // Inflate the layout for this fragment
    return currentFragmentView;
}