在我的 Android Studio 项目中,我有一个 TabView 作为抽屉导航 Activity 的 fragment 。
fragment :
public class TabView extends Fragment {
View inflatedView;
TextView tvBalance;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
inflatedView = inflater.inflate(R.layout.delivery, container, false);
getActivity().setTitle("TabView");
TabLayout tabLayout = (TabLayout) inflatedView.findViewById(R.id.tabLayout);
tabLayout.addTab(tabLayout.newTab().setText("Tab_1"));
tabLayout.addTab(tabLayout.newTab().setText("Tab_2"));
tabLayout.addTab(tabLayout.newTab().setText("Tab_3"));
final ViewPager viewPager = (ViewPager) inflatedView.findViewById(R.id.viewpager);
viewPager.setAdapter(new PagerAdapter
(getFragmentManager(), tabLayout.getTabCount()));
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
return inflatedView;
}
public void updateBalance(String balance) {
if (inflatedView != null) {
tvBalance = inflatedView.findViewById(R.id.tvBalance);
tvBalance.setText("$" + balance);
}
Log.d("updateBalance", balance);
}
每次值发生变化时,都会在我的 MainActivity 中调用 UpdateBalance 方法。这很有效,因为 Log.d(...) 在正确的时间打印正确的值。
不知何故,尽管 fragment 显示在屏幕上,但 Textfield 不会改变,因为 if (inflatedView != null) 永远不会为 true。
为什么inflatedView总是为空以及如何避免这个问题?
最佳答案
我在放置 fragment 时使用TAGS,然后使用findFragmentByTag来测试 fragment 是否膨胀...例如:
// Loading the fragment with a tag:
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content, new HomeFragment(), "HOME_FRAGMENT");
ft.commit();
// then later check if the fragment is there:
HomeFragment fHome = (HomeFragment) getSupportFragmentManager().findFragmentByTag("HOME_FRAGMENT");
if (fHome != null && fHome.isVisible())
{
// my fragment is inflated and visible
}
关于java - Android Studio - 如何检查 fragment 是否膨胀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48528428/