屏幕旋转时未找到资源异常

时间:2016-01-04 05:49:28

标签: android android-layout android-orientation

我在应用程序中遇到问题,当我有平板电脑和小型设备的landscape模式应用程序时。我已将所有布局文件放在layout-landlayout-sw600dp-land文件夹中。我也在orientation文件中定义了屏幕manifest。当我浏览应用程序时,保持移动portrait我发现错误为ResourceNotFoundException。我怎么解决这个问题?。希望得到有利的答案。

以下是我的清单文件实现

<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" />

4 个答案:

答案 0 :(得分:1)

如果您遵循多种布局支持,则不仅限于您已经知道的陆地和端口模式。但是为了纵向模式,您需要将文件保留在默认布局文件夹中。

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

答案 1 :(得分:1)

这是因为当您的设备处于纵向模式并且您尝试打开应用程序时,默认尝试加载纵向模式的资源,然后它会将方向更改为横向(基于您的清单配置)所以您可以在纵向模式下添加启动器屏幕的默认布局,这将解决您的资源未找到异常,应用程序仍然以横向模式加载。

答案 2 :(得分:0)

只需删除您的R.java即可。然后清理并重建你的项目。

答案 3 :(得分:0)

我使用这个类很简单。你打电话给这个班并检查它的手机或平板电脑

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);