2012-04-18 3 views
2

есть вещь, которая действительно заставляет меня сходить с ума. Макет экрана не меняется с земли на портрет правильно.Ориентация экрана и фрагменты

У меня есть две папки в моей папке компоновщика для ориентации вещь и XML-файлы в нем, как это:

layout\main.xml 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

<fragment 
    android:id="@+id/menu" 
    android:name="br.trebew.odonto.MenuData" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

<fragment 
    android:id="@+id/princ" 
    android:name="br.trebew.odonto.FragList"  
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

</LinearLayout> 

и другое:

layout-large-land\main.xml 

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="290dp" 
    android:layout_height="fill_parent"> 

<fragment 
    android:id="@+id/menu" 
    android:name="br.trebew.odonto.MenuData" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

<fragment 
    android:id="@+id/princ" 
    android:name="br.trebew.odonto.FragList"  
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

</LinearLayout> 

<fragment 
    android:id="@+id/fdetalhe" 
    android:name="br.trebew.odonto.DetalheFragment" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 

</LinearLayout> 

Мой главный класс Явы OdontO.java, который является:

public class OdontO extends FragmentActivity implements OnDateChangeListener, OnAgendaItemClickListener { 

FragList fList; 
MenuData mData; 
DetalheFragment frag_detalhe; 

private boolean detalhesInLine; 

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

    setContentView(R.layout.main); 

    Log.i("LayoutOr", "Entrou no onCreate OdontO"); 

    mData = (MenuData) getSupportFragmentManager().findFragmentById(R.id.menu); 
    fList = (FragList) getSupportFragmentManager().findFragmentById(R.id.princ); 

    frag_detalhe = (DetalheFragment) getSupportFragmentManager().findFragmentById(R.id.fdetalhe); 
    detalhesInLine = (frag_detalhe != null && 
      (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)); 
    if (detalhesInLine) { 
     fList.enablePersistentSelection(); 
    } 
    else if (frag_detalhe != null) { 
     frag_detalhe.getView().setVisibility(View.GONE); 
    } 
} 

Если экран является портретным, чем поворот, он изменяется корректно.

Проблема обратная. Если экран является землей, а поворот на карте не изменяется. Infact он правильно называет метод onCreate, но макет не меняется на портрет! =/

Кто-нибудь знает почему?

ответ

1

Проблема может заключаться в том, что ваш портрет находится в папке для экранов обычного размера, а ваш пейзаж находится в папке для экранов большого размера. Возможно, вы могли бы изменить макет-большую землю на простоту макета (если ваше устройство имеет обычный экран) или изменить макет на макет большой (если ваше устройство имеет большой экран) и увидеть его, если что-то сделать. (Примечание: даже если у него большой экран, его размещение в макете и макете должно работать).

+0

Ну ... Я изменил имена папок так же, как вы сказали (обе комбинации), но все равно не работает! Это точно так же, как раньше! =/ – trebew

+0

Не знаю, что-то значит, но я тестировал только на виртуальном устройстве. Android 2.3.3, API уровня 10, Размер экрана: 720x960, Плотность: 240. – trebew

+0

Больше никаких приговоров? – trebew

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