Finishactivity не заканчивает деятельность? - PullRequest
14 голосов
/ 07 декабря 2011

Я пытаюсь заставить свою деятельность закрываться и возвращаться с результатом, у меня есть onActivityResult в моей родительской активности, и я использовал метод, близкий к тому же методу ниже, в других местах, где он работает.

public void deleteFile(){
        boolean deleted=FileManager.getInstance().deleteMeasurementData(this.getIntent().getData(), this);
        if(deleted){
            Toast.makeText(this, originalData.getName() +".mmd Has been deleted", Toast.LENGTH_SHORT);
            setResult(EditMeasurement.RESULT_YES_DELETED);
            finishActivity(EditMeasurement.RESULT_YES_DELETED);
        }else {
            Toast.makeText(this, originalData.getName() +".mmd did NOT delete", Toast.LENGTH_SHORT);
            Log.e(TAG, "File did NOT delete error");
        }

    }

Этот метод был вызван из этого меню:

public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        Log.i(TAG, "something choosen "+item.getItemId()+" it should have been: "+R.id.om_measurement_menu_delete);

        switch (item.getItemId()) {
        case R.id.om_measurement_menu_edit:
            editFile();
            return true;
        case R.id.om_measurement_menu_delete:
            deleteFile();
            return true;
        case R.id.om_measurement_menu_cancel:
            endActivity();
            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

У кого-нибудь есть какие-нибудь яркие идеи, почему он не закрывается?

Ответы [ 2 ]

27 голосов
/ 07 декабря 2011

finishActivity используется для закрытия другого действия от текущего - http://developer.android.com/reference/android/app/Activity.html#finishActivity(int),, поэтому просто измените его на finish();

6 голосов
/ 04 декабря 2012

У меня было это как finish () даже с возвратом, но оно не закрывалось, тогда я понял, что для этого конкретного Действия требуется android:launchMode="singleTask" в Манифесте

...