Android 尝试从ImageView获取图像时出现空指针异常
我正在尝试将表单中的详细信息提交到设备上的本地数据库。我得到一个空指针,它似乎出现在这段代码中。我有一种感觉,这可能与我试图从ImageView获取图像的方式有关 有什么想法吗Android 尝试从ImageView获取图像时出现空指针异常,android,nullpointerexception,android-imageview,Android,Nullpointerexception,Android Imageview,我正在尝试将表单中的详细信息提交到设备上的本地数据库。我得到一个空指针,它似乎出现在这段代码中。我有一种感觉,这可能与我试图从ImageView获取图像的方式有关 有什么想法吗 addContactBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(v.getContex
addContactBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(), "Add Contact", Toast.LENGTH_SHORT).show();
i = new Intent(v.getContext(), ViewActivity.class);
//Add contact to database
dbAdapter.addContact(nameBox.getText().toString(), numberBox.getText().toString(), emailBox.getText().toString(), imgHolder.getDrawingCache());
startActivity(i);
}
});
}
这是addContact()方法:
这是日志输出:
01-17 23:57:16.939: E/AndroidRuntime(4582): FATAL EXCEPTION: main
01-17 23:57:16.939: E/AndroidRuntime(4582): java.lang.NullPointerException
01-17 23:57:16.939: E/AndroidRuntime(4582): at com.example.contactappca2.AddActivity$2.onClick(AddActivity.java:73)
01-17 23:57:16.939: E/AndroidRuntime(4582): at android.view.View.performClick(View.java:3549)
01-17 23:57:16.939: E/AndroidRuntime(4582): at android.view.View$PerformClick.run(View.java:14400)
01-17 23:57:16.939: E/AndroidRuntime(4582): at android.os.Handler.handleCallback(Handler.java:605)
01-17 23:57:16.939: E/AndroidRuntime(4582): at android.os.Handler.dispatchMessage(Handler.java:92)
01-17 23:57:16.939: E/AndroidRuntime(4582): at android.os.Looper.loop(Looper.java:154)
01-17 23:57:16.939: E/AndroidRuntime(4582): at android.app.ActivityThread.main(ActivityThread.java:4944)
01-17 23:57:16.939: E/AndroidRuntime(4582): at java.lang.reflect.Method.invokeNative(Native Method)
01-17 23:57:16.939: E/AndroidRuntime(4582): at java.lang.reflect.Method.invoke(Method.java:511)
01-17 23:57:16.939: E/AndroidRuntime(4582): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-17 23:57:16.939: E/AndroidRuntime(4582): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-17 23:57:16.939: E/AndroidRuntime(4582): at dalvik.system.NativeStart.main(Native Method)
在调用imgHolder.getDrawingCache()之前,尝试调用相应的布局代码>
如图所示:如果直接传递位图而不是imgHolder.getDrawableCache(),则效果更好
BitmapDrawable drawable = (BitmapDrawable) imgHolder.getDrawable();
Bitmap bitmap = drawable.getBitmap();
i = new Intent(v.getContext(), ViewActivity.class);
//Add contact to database
dbAdapter.addContact(nameBox.getText().toString(), numberBox.getText().toString(), emailBox.getText().toString(), bitmap);
startActivity(i);
这一行的确切内容是什么?
(AddActivity.java:73)?如果您将这一行分成不同的行,可能会让您更好地了解哪些对象初始化得不好。@Ameen第73行:imgHolder.getDrawingCache()代码>看答案。
BitmapDrawable drawable = (BitmapDrawable) imgHolder.getDrawable();
Bitmap bitmap = drawable.getBitmap();
i = new Intent(v.getContext(), ViewActivity.class);
//Add contact to database
dbAdapter.addContact(nameBox.getText().toString(), numberBox.getText().toString(), emailBox.getText().toString(), bitmap);
startActivity(i);