我的 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!!
}
});
}
}
在实现了那个小代码之后,如果我决定去 Landscape,应用程序会突然停止说“不幸的是 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 文件对我的问题有太大作用,但我会将它们复制并粘贴到此链接(用于纵向)和此其他链接(用于横向)中,以免使这个问题过长。
提前致谢!