【问题标题】:Finishactivity doesn't finish the activity?Finishactivity 没有完成活动?
【发布时间】:2012-01-15 00:39:26
【问题描述】:

我试图让我的活动关闭并返回结果,我的父活动中确实有 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);
        }
    }

任何有什么好主意的人为什么不关闭?

【问题讨论】:

  • 只需将finish() 放入deleteFile() 中,然后让我知道发生了什么......

标签: android activity-finish


【解决方案1】:

finishActivity 用于关闭当前的另一个活动 - http://developer.android.com/reference/android/app/Activity.html#finishActivity(int),所以只需将其更改为 finish();

【讨论】:

    【解决方案2】:

    即使有返回,我也将它作为finish(),但它不会关闭,然后我意识到那个特定的活动需要清单中的android:launchMode="singleTask"

    【讨论】:

    • IMO,这个答案应该是对已接受答案的评论或版本,因为它似乎是一个有价值的贡献。然而,发帖者没有足够的声誉来评论,编辑答案是很多人不敢做的(包括我自己,我更喜欢 cmets 中的建议)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2012-12-09
    相关资源
    最近更新 更多