我是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会在创建活动时完全崩溃。 如果我删除了侦听器部分,它应该正常工作。 非常感谢你。
答案 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方法