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
,什么时候应该使用 Context
或 ViewGroup
以及为什么。
你知道为什么 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;
}
我有一个带有 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
,什么时候应该使用 Context
或 ViewGroup
以及为什么。
你知道为什么 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;
}