应用程序在使用别名资源的环境中崩溃

时间:2017-11-21 10:30:07

标签: android

这是一个非常简单的应用程序。此应用程序应该在纵向模式下使用纵向,在使用别名资源时在风景中使用横向。

我将逐步解释我的所作所为。

  1. 我使用以下代码在res / values中创建了refs.xml文件:

    <resources>
       <item name = "activity_dualfragment" type="layout">@layout/activity_main</item>
    </resources>
    
  2. 我使用以下代码在res / values-land中创建了refs.xml文件。

    <resources>
       <item name = "activity_dualfragment" type="layout">@layout/activity_main_land</item>
    </resources>
    
  3. 我在布局文件夹中使用文字&#34; landscape&#34;创建了activity_main_land布局。

  4. 最后,我在onCreate方法的MainActivity.java中分配了别名资源。

    的setContentView(R.layout.activity_dualfragment);

  5. 那有什么不对?请帮忙。

    更新: 好吧,错误是由于我删除的主要活动中的浮动图标,错误消失了,现在应用程序没有崩溃。但是,当我运行应用程序之前,当我的设备处于纵向状态时,它会显示纵向,即使我将其更改为横向,但如果我的设备处于横向状态,则即使我将其设为纵向也显示横向。那么发生了什么? @nigam

3 个答案:

答案 0 :(得分:0)

您应该在活动代码下的清单文件中使用此行:

android:configChanges="keyboardHidden|orientation|screenSize"

并使用以下方式获取当前屏幕的方向:

int orientation = this.getResources().getConfiguration().orientation;

if (orientation == Configuration.ORIENTATION_PORTRAIT) {
    //code for portrait mode
  Log.d("Orientation", "ORIENTATION_PORTRAIT");
} else {
    //code for landscape mode
  Log.d("Orientation", "ORIENTATION_LANDSCAPE");
}

答案 1 :(得分:0)

您可以为两个方向创建单独的布局。布局版本将由Android系统自动分配。您可以使用不同的文本放置TextView取决于方向版本。

布局文件必须具有相同的名称,但必须放在不同的子目录中。您可以使用Android Studio通过右键单击创建此项 - &gt;新 - &gt;新资源文件 - &gt;限定符定位如下所示:

enter image description here

答案 2 :(得分:0)

好的,我已经解决了更新中提到的问题。清单文件中的这行代码导致了问题。 机器人:configChanges = “keyboardHidden |方向|屏幕尺寸” 我删除它后,我的应用程序显示基于使用别名的方向的不同布局。