2015-01-18 2 views
0

У меня была активность с TableLayout, и теперь я меняю часть с таблицей на фрагмент. Я пытаюсь динамически добавлять строки в TableLayout изнутри этого фрагмента. Я получил макет для TableRow, который я добавляю, и я пытаюсь раздуть его, установить данные и добавить их в таблицу.Android - TableRow не добавляется в TableLayout во фрагменте

Когда я делаю это в 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); 
    } 

и таблицы вар был определен:

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 и почему.

Вы знаете, почему таблица не заполняется?

ответ

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; 
} 
+0

Я не рядом с компьютером. Я написал код, чтобы завтра его проверить. Возможно ли, что вы также отредактируете свой ответ и объясните разницу между Context и View и GroupView? Поскольку я не уверен, когда использовать тот или иной. –