簡體   English   中英

當按下后退按鈕時,我在Android中強制關閉

[英]When pressed back button, i got Force Close in Android

在我的活動中,我可以去畫廊並可以挑選圖片。 之后,我可以返回到以前的版本。 但是當我去畫廊時,如果我不選擇圖像並按返回按鈕,則無法進入上一個屏幕,我被強制關閉。 不使用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是空的,我怎么能顯示具有此最終狀態的上一個屏幕,這是我的問題。

您需要為結果代碼添加檢查。

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_CANCELLED,而不是RESULT_OK。 無論哪種情況,您都可以使用該區別來做所需的任何事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM