0

我的 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 文件对我的问题有太大作用,但我会将它们复制并粘贴到此链接(用于纵向)此其他链接(用于横向)中,以免使这个问题过长。

提前致谢!

4

1 回答 1

1

在您的横向 XML 文件中,您拥有名为imageButton_Users而不是imageButton_Pacientes的 ImageButton 。重命名它,一切都应该正常工作。

您试图找到一个不存在的视图,因此您的应用程序将崩溃。

于 2015-03-28T12:59:17.547 回答