从纵向切换到横向时出错



我的Android应用程序很简单。它只有1个活动。我为同一个活动创建了两个布局:一个用于纵向位置(在res/layout文件夹内),另一个用于横向位置(在res/layout-land文件夹内)。在这个问题的末尾,我给出了两者的代码。

我在myActivity.java文件中没有什么特别的东西,我只是放大了布局:

package com.example.myApp;
import android.app.Activity;
import android.os.Bundle;
public class MCentralActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_myActivity);
}
}

在这一点上一切都很好。如果我将设备保持在纵向位置,应用程序将调用适当的XML。它也很有魅力,以防我决定把它放在风景位置。

当我决定向前面提到的myActivity.java文件添加一点代码时,问题就出现了;它仍然非常简单!

package com.example.myApp;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
public class MCentralActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    ImageButton ibPacientes;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_myActivity);
    ibPacientes = (ImageButton)findViewById(R.id.imageButton_Pacientes);
    ibPacientes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //NOTHING INSIDE HERE!!
        }
    });
}
}

在实现了那个小代码之后,如果我决定横向,应用程序将突然停止说"不幸的是,myApp已经停止"。有趣的是,如果我不实现onClickListener,就不会发生这种情况!

LogCat给出的确切错误如下所示:

03-28 13:39:27.870: E/SurfaceFlinger(157): DRAW orientation 1 viewport:(0, 0, 1920, 1080) frame(0, 0, 1920, 1080)
03-28 13:39:15.360: E/SurfaceFlinger(157): STATE orientation 1 viewport:(0, 0, 1920, 1080) frame(0, 0, 1920, 1080)
03-28 13:39:15.360: I/SurfaceFlinger(157): @@@@@@@@ orientation:1, transformOri:4

不要认为布局XML文件对我的问题有太大作用,但我会将它们复制并粘贴在这个链接(用于纵向)和另一个链接(用于横向)中,以免使这个问题过长。

提前感谢!

在横向XML文件中,ImageButton名为ImageButton_Users,而不是ImageButton_Pacientes。重命名它,一切都会正常工作。

您正在尝试查找不存在的视图,因此您的应用程序将崩溃。

相关内容

  • 没有找到相关文章

最新更新