2015-12-30 3 views
1

1/ activity_main в "макет" папку:Нет вид найдено для фрагмента при вращении

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/layout_normal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.demofragment.MainActivity" > 
</FrameLayout> 

2/ activity_main в папке "Макет-суша":

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:baselineAligned="false" 
    tools:context="com.example.demofragment.MainActivity" > 

    <com.example.supportlibrary.MenuLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/layout_sliding_menu" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" > 
    </com.example.supportlibrary.MenuLayout> 

</FrameLayout> 

3/ FragmentOne.class:

public class FragmentOne extends Fragment implements OnClickListener{ 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     View v = inflater.inflate(R.layout.fragment_one_layout, container,false); 
     return v; 
    } 
} 

4/ FragmentTwo.class:

public class FragmentTwo extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     View v = inflater.inflate(R.layout.fragment_two_layout, container,false); 
     return v; 
    } 
} 

5/ MainActivity.class:

public class MainActivity extends FragmentActivity { 
    FragmentTransaction transaction; 
    FragmentOne frg1; 
    FragmentTwo frg2; 
    FragmentManager manager; 

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

     frg1 = new FragmentOne(); 
     manager = getFragmentManager(); 
     transaction = manager.beginTransaction(); 
     transaction.add(R.id.layout_normal, frg1, "Frag_One"); 
     transaction.commit(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 

     // Checks the orientation of the screen 
     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      frg1 = new FragmentOne(); 
      frg2 = new FragmentTwo(); 
      transaction.add(R.id.layout_sliding_menu, frg1, "Frag_One"); 
      transaction.add(R.id.layout_sliding_menu, frg2, "Frag_Two"); 
      transaction.commit(); 
     } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 
      frg1 = new FragmentOne(); 
      transaction.add(R.id.layout_normal, frg1, "Frag_One"); 
      transaction.commit(); 
     } 
    } 

Проблема я получаю это исключение, когда поворот экрана:

12-30 06:54:40.062: E/AndroidRuntime(1641): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.demofragment/com.example.demofragment.MainActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f090000 for fragment FragmentOne{53512438 #1 id=0x7f090000 Frag_Top_tag} 

Пожалуйста, покажите мне, как это исправить!

+0

Почему вы добавляете два фрагмента в одну транзакцию? –

+0

Я хочу добавить два фрагмента в мою MainActivity при изменении ориентации. – Kakashi

+0

Попробуйте делить «layout-land' xml» на два «FrameLayouts», а затем добавить каждый «Фрагмент» в отдельный «FrameLayout». –

ответ

0

Снова вызовите setContentView при изменении конфигурации. Поскольку вы обрабатываете изменения конфигурации самостоятельно, вам нужно снова установить представление контента, чтобы использовать правильный макет.

+0

не работает: '( – Kakashi

+0

Я думаю, что два 'FrameLayout' должны использоваться в' layout-land' xml, по одному для каждого фрагмента. –

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