На моей консоли разработчика я получаю некоторые ошибки. Одна вещь об этих ошибках заключается в том, что все они с устройств с версией android 4.1
.Android onCreateView не называется
РЕДАКТИРОВАТЬ: Некоторые ошибки на 4.2 устройствах, но по-прежнему не могут воспроизвести точное поведение.
Я установил эмулятор устройства с версией Android 4.1
и с debbuging Я обнаружил, что onCreateView
он не вызывается.
Я использую фрагменты. У меня есть класс для обработки фрагментов (public class Fragments extends ActionBarActivity implements QueryFragment.OnQuerySelectedListener
) и после того, как он проверяет, если мы на две панели или одного макета панели класс делает это:
@Override
public void onItemSelected(Bundle itemSelectedData) {
View rightLayout = findViewById(R.id.fragment_two);
if (rightLayout != null) {
// do something if we are in "tablet" mode
} else {
Infodata newFragment = new Infodata();
newFragment.setArguments(itemSelectedData);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragmentsboth, newFragment);
// Commit the transaction
transaction.commit();
}
}
и мой класс Infodata
public class Infodata extends Fragment implements OnSeekBarChangeListener, OnItemSelectedListener
Этот класс в этом методы:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
//... more stuff
activityContext = getActivity().getApplicationContext();
bDFav = new Database(activityContext, true);
//... more stuff
}
и
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.mymenu, menu);
if (isItemFavorite()) {
//... do something
} else {
//... do something else
}
}
и, наконец:
boolean isItemFavorite() {
bDFav.open();
// do stuff
bDFav.close();
return isFavorite;
}
С моим телефоном (Android версия 4.2.1) мой Fragments
класс делает Infodata newFragment = new Infodata();
и после transaction.commit();
моего onCreateView
называется инстанцированием все, что необходимо для isItemFavorite()
вызова на onCreateOptionsMenu
. Это делает bDFav.open();
по адресу isItemFavorite()
и работает, как ожидалось, то есть не производит nullpointerexception
.
С другой стороны, с эмулятором, работающим под управлением Android 4.1.1, он работает так же на transaction.commit();
, но после этого мой метод onCreateView
не вызывается и, таким образом, не создает ничего. onCreateOptionsMenu
называется ad там, когда вызывается isItemFavorite()
, он производит nullpointerexception
по адресу bDFav.open();
.
Почему не onCreateView
вызывается в этой версии для Android и как я могу обойти это?