RelativeLayout onClickListener崩溃我的应用程序

时间:2015-01-16 21:28:00

标签: android onclicklistener

我是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>

然后app会在创建活动时完全崩溃。 如果我删除了侦听器部分,它应该正常工作。 非常感谢你。

2 个答案:

答案 0 :(得分:3)

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

这样的东西
@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()将返回null。当您尝试在其上设置侦听器时,这会导致NPE

答案 1 :(得分:0)

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