2016-12-27 3 views
0

У меня странная вещь, что я не уверен, как диагностировать. Вот проблема.ListView нет данных при открытии приложения только в ландшафте

Что работает: Открытие приложения в портретном режиме, затем переход в ландшафтный режим - обе ориентации заполняются правильно.

Что не работает: Открытие приложения в ландшафтном режиме - список просмотров пуст. Но если я поверну его к портрету, он заселяется, а затем вернется к пейзажу, все по-прежнему заселено правильно.

Это ТОЛЬКО случается, когда приложение загружается в первый раз и только в том случае, если телефон находится в ландшафте. Такое поведение не происходит, если приложение открыто, экран выключен, телефон повернут в альбом, экран включен.

Дополнительная информация: Приложение использует ViewPager и открывает фрагмент первого раздела, а данные для списков отображаются до начала фрагментов. Это верно для обеих ориентаций.

Любые идеи, где я могу начать искать диагностику происходящего?

--Edit Я не уверен, какой код был бы полезен, но вот некоторые из них. Я проследил отладку потока программы, и все правильно заполняется, но нет ListViews. Пропущенные списки заполняются, адаптер массива правильно генерирует представления, все выглядит правильно, но на экране ничего не отображается. Опять же, это ТОЛЬКО на начальной загрузке приложения и ТОЛЬКО, когда телефон начинается как пейзаж. Быстрый переход на портрет и обратно, и все в порядке.

OnCreate в MainActivity минус изменение страницы слушателем

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.rootactivitylayout); 

     //create default and upgrade database 
     DBHelper db = new DBHelper(getApplicationContext()); 
     db.closeDB(); 

     ((ExtendedApp) this.getApplication()).initializeGlobals(); 
     PopulateUpgradeList(this); 
     PopulateShipList(this); 
     PopulateSquadronList(this); 
     PopulateObjectiveList(this); 

     // Create the adapter that will return a fragment for each of the three 
     // primary sections of the activity. 
     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

     // Set up the ViewPager with the sections adapter. 
     mViewPager = (ViewPager) findViewById(R.id.pager); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 
     mViewPager.setOffscreenPageLimit(2); 

onCreateView фрагмента-страницы до первого ListView заселяется

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     isLoading = true; 
     thiscontext = container.getContext(); 

     //handle ships 
     //------------------------ 
     View view = inflater.inflate(R.layout.fragarmada, container, false); 
     ArrayList<Ship> tmpList = justShipTypes(); 

     ShipAdapt = new AA_Armada_Ships(thiscontext, tmpList); 
     ListView tmplv = (ListView) view.findViewById(R.id.lvAShipList); 

     tmplv.setAdapter(ShipAdapt); 
     tmplv.setOnItemClickListener(new OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      shipPopup((Ship) view.getTag()); 
      } 
     }); 

Массив код адаптера даёт

+1

КОДЕКС нам нужен TEH CODE – Blundell

+0

идеи: добавить журналы ко всем местам, которые вы * думаете * код запускается, а затем читать журналы – Blundell

+0

У меня такая же проблема, как и вы, какие параметры вам нужно изменить? Первоначально из [Wallison Francisco] (https://stackoverflow.com/users/7658080/wallison-francisco) –

ответ

0

Наконец, наконец, выяснил, что происходит. Это связано с настройкой ширины основного макета и установкой ширины второго слоя. По какой-то причине, когда в ландшафте и только при первоначальном запуске приложения, ширина макета не будет правильно накладываться, и я получу пустой экран.

hoorrah!

Смежные вопросы