我已经搜索了我遇到的问题,但这是非常具体的,我无法找到答案。
我的应用中有以下代码:
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文件,在我的设备中安装后,当我运行我的应用程序时,我收到以下错误:
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)
这是一个非常奇怪的问题......你们有没有想过为什么会这样?
答案 0 :(得分:0)
您需要在setContentView()
中调用onCreate()
来设置用户界面,然后才能以编程方式与其任何组件进行交互。您的前两行onCreate()
应该是super.onCreate(savedInstanceState)
,然后是setContentView(R.layout.your_layout)
。然后继续设置onTouchListener。