在项目中使用 MVP,Activity.finish() 不起作用
Use MVP in Project,Activity.finish() doesn't work
在Activity中,将在工具栏的onOptionsItemSelected()中调用save()方法:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.action_save:
save();
break;
}
return super.onOptionsItemSelected(item);
}
保存()方法:
@Override
public void save() {
Snackbar.make(mContentView,"save",Snackbar.LENGTH_SHORT).show();
presenter.saveTask(mEditText.getText().toString(), mNpAddScore.getValue());
}
演示者中的 saveTask():
@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!!!!");
}
和 view.closeSelf() 将被调用,视图是开头的 activity。
closeSelf():
@Override
public void closeSelf() {
CuteLog.tLog("finish");
finish();
CuteLog.tLog("finish2");
return;
}
但是,荒谬的是,activity 没有完成!!
并且 "finish","finish2" 打印在 logcat.
为什么?
也许这不是正确的finish()
方法。尝试显式调用 Activity.this.finish()
Finish()
只会在主线程中排队操作以完成 activity 但它不是同步操作:)
您可以使用 onDestroy 监听它的事件并检查 isFinishing() 方法。
像往常一样最好的方法就是玩和了解活动的生命周期。
http://developer.android.com/intl/es/training/basics/activity-lifecycle/index.html
在Activity中,将在工具栏的onOptionsItemSelected()中调用save()方法:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.action_save:
save();
break;
}
return super.onOptionsItemSelected(item);
}
保存()方法:
@Override
public void save() {
Snackbar.make(mContentView,"save",Snackbar.LENGTH_SHORT).show();
presenter.saveTask(mEditText.getText().toString(), mNpAddScore.getValue());
}
演示者中的 saveTask():
@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!!!!");
}
和 view.closeSelf() 将被调用,视图是开头的 activity。 closeSelf():
@Override
public void closeSelf() {
CuteLog.tLog("finish");
finish();
CuteLog.tLog("finish2");
return;
}
但是,荒谬的是,activity 没有完成!! 并且 "finish","finish2" 打印在 logcat.
为什么?
也许这不是正确的finish()
方法。尝试显式调用 Activity.this.finish()
Finish()
只会在主线程中排队操作以完成 activity 但它不是同步操作:)
您可以使用 onDestroy 监听它的事件并检查 isFinishing() 方法。
像往常一样最好的方法就是玩和了解活动的生命周期。
http://developer.android.com/intl/es/training/basics/activity-lifecycle/index.html