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

Android - TableRow is not being added to a TableLayout in a fragment

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

当我在 activity 中执行此操作时,它会起作用。现在,当我将 table 的部分移动到 fragment 时,它不起作用,table 应该是的部分仍然是空白,就像那里什么都没有一样。

在activity中有效的代码:

    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);
    }

并且 table 变量被定义为:

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 以及为什么。

你知道为什么 table 没有填满吗?

在你的 oncreateView 方法中你膨胀两个 fragment_show_statistics 你 return 一个,另一个你在 table 中找到

因此您需要 return 您从中找到 table 的那个。

@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;
}