使用findViewById时,Android ICS和Kitkat之间的行为不同

时间:2014-07-02 11:44:24

标签: android view android-4.0-ice-cream-sandwich android-4.4-kitkat

我发现了使用两个不同设备(ICS和Kitkat)的findViewById方法的奇怪行为。我正在使用包含自定义支持片段的片段活动。使用Android FragmentTransation添加片段。

FragmentActivity中的初始化:

@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.voting_list_activity);

 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
 transaction.add(R.id.activity_layout, new CustomFragment());
 transaction.commit();      
}

现在我在Fragments onCreate方法中扩充布局并初始化ui引用。这适用于设备和Android版本。

支持V4片段中的初始化:

public View onCreateView(LayoutInflater inflater, ViewGroup container,
 Bundle savedInstanceState) {
 View view = inflater.inflate(R.layout.fragment_layout, container, false);

 initUiReferences(view);

 return view;
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
 inflater.inflate(R.menu.fragment_menu, menu);
 super.onCreateOptionsMenu(menu, inflater);
}

但现在我面临的问题是我无法在Android Kitkat上使用findViewById()找到对操作栏项的引用。在Android Ice Cream Sandwich上,此调用返回操作项的正确视图,但在KitKat上它返回null。

任何建议。在此先感谢

修改 这是initUiReferences。它只初始化片段中的列表视图。

private void initUiReferencesView(View view) {
 mListView = (ListView) view.findViewById(R.id.list_view);
 mListView...

 // This call always returns null on Kitkat
 View actionItem = view.findViewById(R.id.action_item);
}

在片段元素上调用findViewById没有任何问题,但是当我尝试查找操作栏项时,它返回null。我也尝试在onResumeonViewCreated中找到引用,但它并没有解决问题。操作栏项目显示在显示屏上并正常工作。

0 个答案:

没有答案