-2

一部のユーザーが以下のコードの onClick メソッドで null ポインターを報告している Android アプリがあります。ログには 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;
4

3 に答える 3

0

アプリがクラッシュしないようにするには、をチェックするだけif(selectedAlbum == null)です。そうである場合は、状況を適切に処理し、ユーザーが強制終了を経験しないようにします。

おそらく、「アルバムを選択してください」とユーザーに尋ねるトーストまたはダイアログを提示します。値がどのようselectAlbumに割り当てられているかを確認しないと、2台の電話だけがこのエラーレポートを作成した理由を知ることはできません。これらのユーザーは、あなたが予測していなかった一連のボタンをクリックしたか、メーカーの癖かもしれません...これ以上の情報がなければ知ることは不可能です。

于 2012-08-13T03:57:01.607 に答える
0

間違ったコードスニペットを提供したと思います。NPEが

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

...その後selectedAlbumnullになり、電話をかけることはできませんnull.getId()

于 2012-08-13T03:53:14.520 に答える
0

ユーザー側のエラーが原因で、アプリが Facebook からアルバム リストを取得できなかったというエラーがほとんどないことが判明しました。これで解決しました。回答者に感謝します。

于 2012-08-13T17:06:37.810 に答える