2015-01-16 2 views
0

Я начинаю разработку Android и я не могу найти решение этой проблемы. Я хочу сделать что-то, когда экран нажат, независимо от того, где.RelativeLayout onClickListener отключает мое приложение

Мой код:

@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> 

Затем приложение падает точно, когда активность создается. Если я удаляю часть слушателя, она работает так, как должна. спасибо.

ответ

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() возвращает нуль. Это вызывает NPE, когда вы пытаетесь установить на него слушателя.

+0

Worked. Благодарю вас! – Cristian

0

Вы должны убедиться, что вы вызываете метод setContentView с R.layout.your_file_name до вашего findViewById вызова

Смежные вопросы