-2

我有一个 android 应用程序,一些用户在下面代码的 onClick 方法上报告了一个空指针。日志显示第 226 行,这就是 selectedAlbum.getId() 检查空值的地方。我没有遇到此错误,但市场报告在 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;
4

3 回答 3

0

要阻止应用程序崩溃,只需检查if(selectedAlbum == null). 如果是,请优雅地处理这种情况并避免用户遇到强制关闭。

可能会显示一个 Toast 或对话框,要求用户“请选择专辑”。如果不了解如何selectAlbum分配值,就不可能知道为什么只有两部手机创建了此错误报告。这些用户可能点击了一系列您没有预料到的按钮,或者这可能是制造商的怪癖……没有更多信息是不可能知道的。

于 2012-08-13T03:57:01.607 回答
0

事实证明,由于用户端的错误,应用程序无法从 Facebook 检索专辑列表,几乎没有错误。现在这个问题已经解决了。感谢那些回复的人。

于 2012-08-13T17:06:37.810 回答
0

我认为您提供了错误的代码段。如果 NPE 在

if ((selectedAlbum.getId() == null)

...然后selectedAlbum是空的,你不能打电话null.getId()

于 2012-08-13T03:53:14.520 回答