Не получается найти элемент по id во фрагменте
После создания фрагмента я использую метод findViewbyId, который должен возвращать мне вложенный список. Вложенный список находится во фрагменте. Но поиск по id возвращает null и приложение падает. Предварительное получение самого фрагмента с помощь фрагмент менеджера тоже возвращает null.
Можно ли получить доступ к view элементам фрагмента если он динамически загружается? Если да, то как это правильно сделать?
public class MainActivity extends Activity {
private FragmentManager fragmentManager;
private ConvertsFragment convertsFragment;
private MainFragment mainFragment;
private StorageFragment storageFragment;
private ImageButton converts_button;
private ImageButton home_button;
private ImageButton storage_button;
private Button settings_button;
private String[] mGroupsArray = new String[] { "Зима", "Весна"};
private String[] mWinterMonthsArray = new String[] { "Декабрь", "Январь", "Февраль" };
private String[] mSpringMonthsArray = new String[] { "Март", "Апрель", "Май" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.storage_and_converts_layout);
converts_button=findViewById(R.id.converts_button);
home_button=findViewById(R.id.home_button);
storage_button=findViewById(R.id.storage_button);
convertsFragment=new ConvertsFragment();
mainFragment=new MainFragment();
storageFragment=new StorageFragment();
fragmentManager = getFragmentManager();
settings_button=findViewById(R.id.settings_button);
}
public void ClickFragmentButton(View view){
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
switch (view.getId()) {
case R.id.home_button:
if (fragmentManager.findFragmentByTag(MainFragment.TAG) == null) {
fragmentTransaction.replace(R.id.fragment_layout, mainFragment, MainFragment.TAG);
}
break;
case R.id.storage_button:
if (fragmentManager.findFragmentByTag(StorageFragment.TAG) == null) {
fragmentTransaction.replace(R.id.fragment_layout, storageFragment, StorageFragment.TAG);
}
break;
case R.id.converts_button:
if (fragmentManager.findFragmentByTag(ConvertsFragment.TAG) == null) {
fragmentTransaction.replace(R.id.fragment_layout, convertsFragment, ConvertsFragment.TAG);
}
break;
}
fragmentTransaction.commit();
switch (view.getId()) {
case R.id.home_button:
FillHistoryList();
break;
case R.id.converts_button:
FillConvertsList();
break;
}
}
private void FillHistoryList(){
Map<String, String> map;
ArrayList<Map<String, String>> groupDataList = new ArrayList<>();
for (String group : mGroupsArray) {
map = new HashMap<>();
map.put("groupName", group);
groupDataList.add(map);
}
String groupFrom[] = new String[] { "groupName" };
int groupTo[] = new int[] { android.R.id.text1 };
ArrayList<ArrayList<Map<String, String>>> сhildDataList = new ArrayList<>();
ArrayList<Map<String, String>> сhildDataItemList = new ArrayList<>();
for (String month : mWinterMonthsArray) {
map = new HashMap<>();
map.put("monthName", month);
сhildDataItemList.add(map);
}
сhildDataList.add(сhildDataItemList);
сhildDataItemList = new ArrayList<>();
for (String month : mSpringMonthsArray) {
map = new HashMap<>();
map.put("monthName", month);
сhildDataItemList.add(map);
}
сhildDataList.add(сhildDataItemList);
String childFrom[] = new String[] { "monthName" };
int childTo[] = new int[] { android.R.id.text1 };
SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(
this, groupDataList,
android.R.layout.simple_expandable_list_item_1, groupFrom,
groupTo, сhildDataList, android.R.layout.simple_list_item_1,
childFrom, childTo);
ConvertsFragment f=(ConvertsFragment) fragmentManager.findFragmentByTag(MainFragment.TAG);
ExpandableListView expandableListView=f.getView().findViewById(R.id.list_history_of_transactions);
expandableListView.setAdapter(adapter);
}
На вот этом моменте падает
ConvertsFragment f=(ConvertsFragment) fragmentManager.findFragmentByTag(MainFragment.TAG);
ExpandableListView expandableListView=f.getView().findViewById(R.id.list_history_of_transactions);
expandableListView.setAdapter(adapter);
.
public class MainFragment extends Fragment {
public static final String TAG = "MainFragment";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main_fragment, null);
return view;
}
}