我有一个Android应用程序,有些用户在下面代码的onClick方法上报告了一个空指针。日志显示第226行,其中selectedAlbum.getId()检查为null。我没有遇到错误,但市场报告显示2个设备上出现此错误。我该怎么做才能解决这个问题?
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 */
}
}
selectedAlbum也会在活动开始前和onCreate上设置。
public Album selectedAlbum;
答案 0 :(得分:0)
我认为您提供了错误的代码段。如果NPE在
if ((selectedAlbum.getId() == null)
...然后selectedAlbum
为空,您无法调用null.getId()
答案 1 :(得分:0)
要停止应用程序崩溃,只需检查if(selectedAlbum == null)
即可。如果是,请优雅地处理该情况并使用户免于经历强制关闭。
可能会出现Toast或Dialog,要求用户“请选择一个专辑”。如果没有看到selectAlbum
如何分配值,则无法知道为什么只有两部手机创建了此错误报告。这些用户可能已经点击了一些您没有预测到的按钮,或者可能是制造商的怪癖......没有更多信息就无法知道。
答案 2 :(得分:0)
事实证明,由于用户端的错误导致应用程序无法从Facebook检索专辑列表,因此很少有错误。这已经解决了。感谢那些回应的人。