在Project中使用MVP,Activity.finish()不起作用

时间:2016-02-20 10:39:02

标签: android android-activity mvp

在Activity中,save()方法将在工具栏的onOptionsItemSelected()中调用:

ParentSchema

save()方法:

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){

        case R.id.action_save:
            save();
            break;
    }
    return super.onOptionsItemSelected(item);
}
演示者中的

saveTask():

@Override
public void save() {
    Snackbar.make(mContentView,"save",Snackbar.LENGTH_SHORT).show();
    presenter.saveTask(mEditText.getText().toString(), mNpAddScore.getValue());
}
将调用

和view.closeSelf(),视图是开始时的活动。 closeSelf():

@Override
public void saveTask(String content, int addScore) {
    CuteLog.tLog("content:" + content + "content.len:" +   content.length()+",addScore:" + addScore);
    if (content == null || content.length() == 0){
        view.remindNullInput();
        return;
    }

    modle.addTask(content, addScore+"");
    view.closeSelf();
    CuteLog.tLog("saveTask!!!!");
}

但是,荒谬的是,活动没有完成!! 并且“完成”,“完成2”将在logcat中打印出来。

为什么?

2 个答案:

答案 0 :(得分:1)

Finish() 

只会将操作排入主线程以完成活动,但它不是同步操作:)

您可以使用onDestroy监听其事件并检查isFinishing()方法。

最常见的方法是玩和理解活动的生命周期。

http://developer.android.com/intl/es/training/basics/activity-lifecycle/index.html

答案 1 :(得分:0)

也许这不是正确的finish()方法。尝试明确调用Activity.this.finish()