2016-01-04 4 views
2

У меня есть проблема в приложении, когда у меня есть приложение режима для планшетов и небольших устройств. Я разместил все файлы макета в папке layout-land и layout-sw600dp-land. Я определил экран orientation в файле manifest. Когда я изучаю приложение, сохраняя мобильный portrait, я обнаружил ошибку ResourceNotFoundException. Как я могу решить эту проблему?. Надеюсь на благоприятный ответ.Ресурс не найден исключение при повороте экрана

Ниже мой menifest реализация файл

<activity 
      android:name=".SplashScreenActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="landscape" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".ui.MainActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="landscape" > 
     </activity> 
     <activity 
      android:name=".ui.ForgotPassword" 
      android:screenOrientation="landscape" /> 
     <activity 
      android:name=".ui.LoginFragment" 
      android:screenOrientation="landscape" /> 
     <activity 
      android:name=".ui.Lending" 
      android:screenOrientation="landscape" /> 
     <activity 
      android:name=".ui.SavedTakeOff" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:screenOrientation="landscape" /> 
     <activity 
      android:name=".ui.ItemsFragment" 
      android:configChanges="orientation|keyboardHidden|screenSize" 
      android:screenOrientation="landscape" /> 
+0

У вас есть все макеты в папке макета для мобильного экрана? – Jas

+0

опубликуйте весь стек и структуру каталогов, прежде чем попытаться очистить и построить – insomniac

+0

Вам не нужно указывать какой-либо идентификатор в вашем xml .... размещать свой логин здесь –

ответ

2

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

MyProject/ 
res/ 
    layout/    # default (portrait) 
     main.xml 
    layout-land/   # landscape 
     main.xml 
    layout-large/  # large (portrait) 
     main.xml 
    layout-large-land/ # large landscape 
     main.xml 
+0

эти квалификаторы устарели –

+0

@VivekMishra Я следил за той же структурой для моего ландшафтного приложения, как вы писали выше. Но, исследуя приложение, я сталкиваюсь с проблемой изменения дизайна. Похоже, что когда-нибудь приложение связывает макет с папкой «layout» вместо папки «layout-land». – Philliphe

+0

Я этого не писал. Я говорю, что теперь вы должны использовать обозначение sw для создания папок для разной компоновки разрешений. И дважды проверьте свои макеты и манифест для ориентации и макета. –

0

Просто удалите свой R.java. затем очистите и перестройте свой проект.

0

Его просто я использовать этот class.you называют этот класс и проверить его мобильный телефон или планшет

public class Utils { 
public static void CopyStream(InputStream is, OutputStream os) 
{ 
    final int buffer_size=1024; 
    try 
    { 
     byte[] bytes=new byte[buffer_size]; 
     for(;;) 
     { 
      int count=is.read(bytes, 0, buffer_size); 
      if(count==-1) 
       break; 
      os.write(bytes, 0, count); 
     } 
    } 
    catch(Exception ex){} 
} 

public static boolean isTablet(Activity activity) { 
    return (activity.getResources().getConfiguration().screenLayout 
     & Configuration.SCREENLAYOUT_SIZE_MASK) 
     >= Configuration.SCREENLAYOUT_SIZE_LARGE; 
}} 

просто вы звоните в деятельности вы называете это его будет проверять мобильный телефон или планшет

if (!Utils.isTablet(this)) 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
2

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

+0

Я поместил весь ландшафт в папку макета по умолчанию в соответствии с вашим предложением. Но, исследуя приложение, я сталкиваюсь с проблемой изменения дизайна. Похоже, что когда-нибудь приложение связывает макет с папкой «layout» вместо папки «layout-land». – Philliphe

+1

Нет, не нужно размещать все макеты в папке макета по умолчанию. Просто добавьте макет Launcher в папку Layout в вашем случае .SplashScreenActivity. Даже если это не работает, добавьте прослушиватель изменений конфигурации и сообщения, чтобы помочь нам отладить проблему. –