У меня есть Fragment
с TableLayout
. Данные в таблице взяты из SQLite db. SQLite db заполняется из веб-службы RESTful в AsyncTask
в MainActivity
. Fragment
должен дождаться завершения задачи перед заполнением таблицы. Fragment
прослушивает задание onPostExecute()
. Когда это так, вызывается метод onLoadAndStoreComplete()
в Fragment
. Все это работает.Как получить представление фрагмента вне OnCreateView()
Мне нужно получить TableLayout
за пределами OnCreateView()
метод фрагмента. Если бы я мог получить вид фрагмента в onLoadAndStoreComplete
, который бы доставил меня туда.
Same code as here. Я получил mContext
от MainActivity, но это не имеет никакого getView()
метод, связанный с ним.
Я пробовал:
- сделать rootView члена класса и назначения в onCreateView(), но в onLoadAndStoreComplete()
, она равна нулю.
- создание таблицы-члена классаLayout и назначение в onCreateView(), но в onLoadAndStoreComplete()
оно равно null.
- вызов this.getView() снова в onLoadAndStoreComplete()
, но он возвращает null.
- вызов инфлятором внутри onLoadAndStoreComplete()
, который работает, но тогда я не знаю, что использовать для контейнера в .inflate()
вызова
Я не понимаю, почему значения членов класса из rootView и TableLayout равны нулю в onLoadAndStoreComplete()
public class MyFragment extends Fragment implements OnLoadAndStoreCompleteListener {
private TableLayout tableLayout;
private View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mContext = this.getActivity();
rootView = inflater.inflate(R.layout.fragment_permits, container, false); // this works
tableLayout = (TableLayout) rootView.findViewById(R.id.main_table); // and this
...
}
@Override
public void onLoadAndStoreComplete() {
// rootView is null, ie not remembered from OnCreateView
View view = getView(); // null
LayoutInflater inflater = LayoutInflater.from(getActivity());
rootView = inflater.inflate(R.layout.fragment_permits, container, false); // container? don't know what it should be
// tableLayout is null
tableLayout.addView(tableRow, new TableLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
}
...
}
Что такое 'OnLoadAndStoreCompleteListener' и когда он вызывается? Не удается найти это в Android API – m0skit0
Никогда не слышал о 'onLoadAndStoreComplete()' вы уверены, что соблюдаете жизненный цикл «Фрагмента»? Если бы вы тогда 'getView()' не вернули бы 'null' ... –
Также попытка получить доступ к' View' из 'Fragment' за пределами указанного« Fragment »является очень плохим дизайном ... Я предлагаю вам переосмыслить, что вы хотите сделать и попробовать более абстрактное решение. –