我正在尝试执行水平布局,但是不会调用layout-land中的layout。我尝试了几乎所有在线提供的解决方案。
我正在获取Resources $ NotFoundException:资源ID#0x7f0b007b
上
setContentView(R.layout.login_activity);
只有该活动的水平布局时。 (我尝试通过仅在布局区域保留该活动的一个布局)
在清单中
<activity
android:name=".activities.Login"
android:configChanges="keyboardHidden|screenSize" />
我的layout-land文件夹在res文件夹中,所以没有问题。 我清理了项目,重新启动Studio,然后删除“ build”文件夹,但对我没有任何帮助。
下面的方法也不会被调用:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.d(TAG, "onConfigurationChanged() " + newConfig.orientation);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
//myCode
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
//myCode
}
}
Horizontal仅当我按android设备菜单按钮时所有能够在水平模式下查看的应用程序,并且当我单击我的应用程序时它才变为水平,然后在水平视图和纵向视图中都可以使用。
onConfigurationChanged方法被称为该活动。
我不明白为什么我的应用程序会发生这种情况。
应用程序崩溃时我得到的日志
FATAL EXCEPTION: main
Process: com.my.pakage, PID: 6922
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.my.pakage/com.my.pakage.activities.Login}: android.content.res.Resources$NotFoundException: Resource ID #0x7f0b007b
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x7f0b007b
at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:195)
at android.content.res.Resources.loadXmlResourceParser(Resources.java:2133)
at android.content.res.Resources.getLayout(Resources.java:1142)
at android.view.LayoutInflater.inflate(LayoutInflater.java:421)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:292)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.my.pakage.activities.Login.onCreate(Login.java:96)
at android.app.Activity.performCreate(Activity.java:6975)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
答案 0 :(得分:0)
亲自处理配置更改可以做得更多 难以使用替代资源,因为系统没有 自动为您应用它们。应该考虑这种技术 最后的选择,当您必须避免由于配置而重新启动时 更改,不建议在大多数应用中使用。
第一组
演示
<activity android:name=".activities.Login"
android:configChanges="orientation|screenSize|keyboardHidden"
android:label="@string/app_name">
阅读Handle configuration changes
当您声明要处理配置的活动时 更改,您有责任重置您要为其设置的任何元素 提供替代方案。如果您声明要处理的活动 方向改变并且图像应该在 横向和纵向,您必须将每个资源重新分配给每个资源
onConfigurationChanged()
中的元素。
仅供参考
当找不到请求的资源时,资源API会引发