2014-01-09 3 views
4

Я добавил фрагменты, используя java.Фрагменты исчезают при повороте

Когда я открываю приложение в портретном режиме, он работает.

ScrrenShot

если повернуть фрагмент просто исчезнуть.

enter image description here

, но если я закрыть приложение, а затем повернуть телефон, а затем откройте приложение еще раз, это работает.

enter image description here

У меня есть два различных макеты один для портретного другого режима для ландшафтного режима, как с тем же именем, у меня есть макет для портрета в папке «макет», а также макет ландшафта на " layout-land ".

кажется, что я что-то забываю, искренне, я новичок в развитии Android.

активность:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     ListFragment frag = new ListFragment(); 

     setContentView(R.layout.layout_main); 

     FragmentManager manager = getFragmentManager(); 
     FragmentTransaction transaction = manager.beginTransaction(); 

     transaction.add(R.id.LIST_LAYOUT,frag,"LIST"); 
     transaction.commit(); 

    } 

Фрагмент:

public class ListFragment extends Fragment implements AdapterView.OnItemClickListener{ 


    ListView List; 
    Communicator communicator; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     //return super.onCreateView(inflater, container, savedInstanceState); 

     return inflater.inflate(R.layout.mlistfragment,container,false); 


    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 

     communicator = (Communicator) getActivity(); 

     List = (ListView) getActivity().findViewById(R.id.listView); 

     ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(),R.array.StrListButtons,android.R.layout.simple_list_item_1); 
     List.setAdapter(adapter); 


     List.setOnItemClickListener(this); 


    } 
+0

При изменении ориентации деятельность разрушается и воссоздается. Так что фрагмент как фрагмент размещен по активности – Raghunandan

ответ

12

Вы на самом деле не нужно, чтобы добавить Fragment каждый раз, когда Activity создается; FragmentManager поддерживает их автоматически. Вы должны обернуть код, который делает FragmentTransaction в if (savedInstanceState == null), так, чтобы он был выполнен только при первом создании Activity. Например:

if (savedInstanceState == null) { 
    getFragmentManager().beginTransaction() 
         .add(R.id.list_layout, new ListFragment(), "LIST") 
         .commit(); 
} 
+0

, он работал благодаря сэр. – user1519426

+0

У меня есть утверждение if, но все же контент исчезает, любая идея почему? http://stackoverflow.com/questions/41231235/activity-content-disappears-when-rotating –

-2

Попробуйте использовать setRetainInstance (истина); в методе onCreate вашего фрагмента.

-1

Здравствуйте Привет вы могли бы попробовать реализовать onResume() и вызов этот блок кода из там

FragmentManager manager = getFragmentManager(); 
    FragmentTransaction transaction = manager.beginTransaction(); 

    transaction.add(R.id.LIST_LAYOUT,frag,"LIST"); 
    transaction.commit(); 

также переопределить onsaveinstancestate()

0

Деятельность обычно воссозданы после изменения ориентации. Вы можете попробовать использовать метод onSaveInstanceState() для сохранения данных.

Для получения более подробной информации, пожалуйста, обратитесь к этой ссылке.

http://developer.android.com/guide/components/activities.html#ConfigurationChanges

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