0

私のアクティビティでは、ギャラリーに移動して画像を選択できます。その後、前の画面に戻ることができます。しかし、ギャラリーに行ったとき、画像を選択して戻るボタンを押さないと、前の画面に移動できず、強制的に閉じられました。startActivity(intent) を使用せずに、どうすれば修正できますか? これが私のコードです:最初に私はに定義しました

private static final int ACTIVITY_REQUEST_PICK_ATTACHMENT = 1;

活動結果コードについて:

protected void onActivityResult(int requestCode, int resultCode,
            Intent data) {




    super.onActivityResult(requestCode, resultCode, data);

            mAttachments = (LinearLayout) findViewById(R.id.attachments);

            switch (requestCode) {
            case ACTIVITY_REQUEST_PICK_ATTACHMENT:

                Uri _uri = data.getData();

                addAttachment(_uri);

                Cursor cursor = getContentResolver()
                        .query(_uri,
                                new String[] { android.provider.MediaStore.Images.ImageColumns.DATA },
                                null, null, null);
                cursor.moveToFirst();
                File imageFilePath = new File(cursor.getString(0));
                uris.add(imageFilePath);
                names.add(imageFilePath.getName());

                Log.v("imageFilePath", imageFilePath.toString());
                break;

私はここでそれを呼び出します:

private void onAddAttachment2(final String mime_type) {

        // setContentView(R.layout.main);

        Intent i = new Intent(Intent.ACTION_GET_CONTENT);
        i.addCategory(Intent.CATEGORY_OPENABLE);
        i.setType(mime_type);
        startActivityForResult(Intent.createChooser(i, null),
                ACTIVITY_REQUEST_PICK_ATTACHMENT);
    }

私のLogCatのエラー

05-20 13:16:39.809: E/AndroidRuntime(374):  at my.mail.SenderActivity.onActivityResult(KepenekActivity.java:294)

エラーをダブルクリックすると、行が表示されます

Uri _uri = data.getData();

論理的には本当です。私の _uri は空です。この最終状態で前の画面を表示するにはどうすればよいですか。これが私の問題です。

4

1 に答える 1

1

結果コードのチェックを追加する必要があります。

protected void onActivityResult(int requestCode, int resultCode,Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    mAttachments = (LinearLayout) findViewById(R.id.attachments);

    switch (requestCode) {
        case ACTIVITY_REQUEST_PICK_ATTACHMENT:
            if (resultCode == RESULT_OK) { // <------ THIS LINE IS IMPORTANT
                Uri _uri = data.getData();

                addAttachment(_uri);

                Cursor cursor = getContentResolver()
                    .query(_uri,
                            new String[] { android.provider.MediaStore.Images.ImageColumns.DATA },
                            null, null, null);
                cursor.moveToFirst();
                File imageFilePath = new File(cursor.getString(0));
                uris.add(imageFilePath);
                names.add(imageFilePath.getName());

                Log.v("imageFilePath", imageFilePath.toString());
            }
            break;

何かを選択する代わりに戻るボタンを押すと、resultCode は RESULT_OK ではなく RESULT_CANCELLED に設定されます。どちらの場合でも、その区別を使用して必要なことを行うことができます。

于 2012-05-20T13:37:39.313 に答える