RelativeLayout onClickListener 使我的应用程序崩溃

RelativeLayout onClickListener crashes my app

我是 android 开发的初学者,我找不到解决这个问题的方法。 我想在按下屏幕时做点什么,不管在哪里。

我的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout);
    layout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

</RelativeLayout>

然后应用程序在创建 activity 时崩溃。 如果我删除监听器部分,它会正常工作。 非常感谢。

你还没有夸大你的布局。你需要像

这样的东西
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.yourLayout); // this guy here

RelativeLayout layout = (RelativeLayout) findViewById(R.id.layout);
layout.setOnClickListener(new View.OnClickListener() {

您的 RelativeLayout 存在于您的布局文件中,并且由于您没有使用 setContentView()findViewById() returns null 对其进行扩充。当您尝试在其上设置侦听器时,这会导致 NPE

您需要确保在调用 findViewById 之前使用 R.layout.your_file_name 调用 setContentView 方法