Android findViewById在更改CompileSDK版本和buildToolsVersion后返回null
我已经搜索了我遇到的问题,但它非常具体,我找不到答案 我的应用程序中有以下代码:Android findViewById在更改CompileSDK版本和buildToolsVersion后返回null,android,nullpointerexception,null,findviewbyid,Android,Nullpointerexception,Null,Findviewbyid,我已经搜索了我遇到的问题,但它非常具体,我找不到答案 我的应用程序中有以下代码: class MainActivity extends Activity { ... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
class MainActivity extends Activity {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
...
mStatusImageView = (ImageView) findViewById(R.id.imageViewStatus);
...
mStatusImageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
...
}
...
}
我最初使用以下方法编译和导出APK:
compileSdkVersion 21
buildToolsVersion "21.1.2"
一切正常。但随后我将我的应用程序更新为最新版本:
compileSdkVersion 23
buildToolsVersion "23.0.1"
现在奇怪的部分来了。使用compileSdk和buildTools的最新版本,如果我处于调试模式,一切都可以正常运行
但是,如果我在设备中安装APK文件后导出APK文件,当我运行应用程序时,会出现以下错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{x.x.x/x.x.x.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ImageView.setOnTouchListener(android.view.View$OnTouchListener)' on a null object reference : at x.x.x.MainActivity.onCreate(Unknown Source)
这是一个非常奇怪的问题。。。你们知道为什么会发生这种情况吗?在与任何组件进行编程交互之前,必须在
onCreate()
中调用setContentView()
来设置UI。onCreate()
的前两行应该是super.onCreate(savedInstanceState)
,然后是setContentView(R.layout.Your\u布局)
。然后继续设置onTouchListener。清除项目并重新构建是的,我正在这样做。我改变了问题,这样问题就清楚了。也许还可以发布你的activity_main.xml内容,这样我们就可以看到ImageView,等等。