Это мое решение:
function resolve(path, obj) {
return path.split('.').reduce(function(prev, curr) {
return prev ? prev[curr] : null
}, obj || self)
}
Примеры использования:
resolve("document.body.style.width")
// or
resolve("style.width", document.body)
// or even use array indexes
// (someObject has been defined in the question)
resolve("part.0.size", someObject)
// returns null when intermediate properties are not defined:
resolve('properties.that.do.not.exist', {hello:'world'})
Добавьте этот фрагмент в ProfileScreenFragment.
@Override
protected void onViewCreated(View view, Bundle savedInstanceState) {
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, FragmentB.newInstance());
transaction.commit();
}
Для макета вкладки можно добавить прослушиватель изменения вкладки
TabLayout tabLayout = view.findViewById(R.id.tabs);
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
switch (tab.getPosition()) {
case 0: // Handle 1st tab item
break;
case 1: // Handle 2nd tab item
break;
case 2: // Handle 3rd tab item
break;
case 3: // Handle 4th tab item
break;
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});