Java onClick()上的空指针
我有一个android应用程序,一些用户在下面代码的onClick方法上报告一个空指针。日志显示第226行,这就是selectedAlbum.getId()检查null的位置。我没有遇到过这个错误,但市场报告显示有两台设备出现了这个错误。我能做些什么来解决这个问题Java onClick()上的空指针,java,android,onclick,nullpointerexception,Java,Android,Onclick,Nullpointerexception,我有一个android应用程序,一些用户在下面代码的onClick方法上报告一个空指针。日志显示第226行,这就是selectedAlbum.getId()检查null的位置。我没有遇到过这个错误,但市场报告显示有两台设备出现了这个错误。我能做些什么来解决这个问题 public void onClick(View v) { Log.v("uploadButton", "uploadButton Clicked"); if ((se
public void onClick(View v) {
Log.v("uploadButton", "uploadButton Clicked");
if ((selectedAlbum.getId() == null)
|| (selectedAlbum.getId() == "")) {
Toast.makeText(getApplicationContext(),
"Please Select an Album First", Toast.LENGTH_LONG)
.show();
} else {
if (m_photos.isEmpty()) {
Toast.makeText(getApplicationContext(),
"No Pictures Selected", Toast.LENGTH_LONG)
.show();
} else {
// Do action to upload photos from array to facebook
progressDialog = ProgressDialog
.show(EasyPhotoUpload.this, "",
"Uploading Photos...");
Log.v("uploadButton", "Starting upload thread");
new Thread(new Runnable() {
@Override
public void run() {
Log.v("uploadButton", "running.....");
下面是设置selectedAlbum的代码
public class AlbumSelectedListener implements OnItemSelectedListener {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos,
long id) {
selectedAlbum = (Album) albumSpinner.getItemAtPosition(pos);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {/* not implemented */
}
}
我认为您提供了错误的代码段。如果NPE处于
if ((selectedAlbum.getId() == null)
…然后,
selectedAlbum
为null,您不能调用null.getId()
来阻止应用程序崩溃,只需检查是否(selectedAlbum==null)
。如果是,请优雅地处理该情况,并避免用户遭遇强制关闭
可能会呈现一个祝酒词或对话框,要求用户“请选择相册”。如果不了解如何为
selectAlbum
赋值,就不可能知道为什么只有两部手机创建了此错误报告。这些用户可能点击了一系列你没有预料到的按钮,或者这可能是制造商的怪癖。。。如果没有更多信息,就不可能知道。事实证明,由于用户端出现错误,应用程序无法从Facebook检索相册列表。这个问题现在已经解决了。感谢那些回应的人 可能是selectedAlbum为null,您调用selectedAlbum.getId()。它将引发null指针异常。请发布为selectedAlbum分配值的代码。我看到您更新了问题,说明了selectAlbum
的初始化位置。onClick()方法是如何考虑的?这是一个始终可见的按钮,是在选择相册之前隐藏还是其他什么?@Sam它始终可见,他们单击按钮并选择album连接到微调器元素。如果微调器为空,则会通知用户选择某个内容。但是,在微调器中选择相册之前,只需按下按钮,您无法自己重新创建错误?是的,为什么在某些手机上会发生这种情况,而在其他手机上不会?如何防止?如果(selectedAlbum==null | | selectedAlbum.getId()==null)虽然从技术上讲这是一个防止应用程序崩溃的解决方案,但您可能还想调查在逻辑上是否应该将其设为null(可能是在用户尚未选择相册时)
if ((selectedAlbum.getId() == null)