Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java onClick()上的空指针_Java_Android_Onclick_Nullpointerexception - Fatal编程技术网

Java onClick()上的空指针

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

我有一个android应用程序,一些用户在下面代码的onClick方法上报告一个空指针。日志显示第226行,这就是selectedAlbum.getId()检查null的位置。我没有遇到过这个错误,但市场报告显示有两台设备出现了这个错误。我能做些什么来解决这个问题

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)