Android:无法调用完成()
Posted
技术标签:
【中文标题】Android:无法调用完成()【英文标题】:Android: Can't call finish() 【发布时间】:2019-12-12 12:12:28 【问题描述】:为什么我不能在下面的代码中调用finish()
?
我也无法启动任何 Intent。
这是我的代码:
public class EditProfilePresenter<V extends EditProfileView> extends PickImagePresenter<V>
protected Profile profile;
protected ProfileManager profileManager;
protected EditProfilePresenter(Context context)
super(context);
profileManager = ProfileManager.getInstance(context.getApplicationContext());
public void loadProfile()
ifViewAttached(BaseView::showProgress);
profileManager.getProfileSingleValue(getCurrentUserId(), new OnObjectChangedListenerSimple<Profile>()
@Override
public void onObjectChanged(Profile obj)
profile = obj;
ifViewAttached(view ->
if (profile != null)
view.setName(profile.getUsername());
if (profile.getPhotoUrl() != null)
view.setProfilePhoto(profile.getPhotoUrl());
view.hideProgress();
view.setNameError(null);
);
);
public void attemptCreateProfile(Uri imageUri)
if (checkInternetConnection())
ifViewAttached(view ->
view.setNameError(null);
String name = view.getNameText().trim();
boolean cancel = false;
if (TextUtils.isEmpty(name))
view.setNameError(context.getString(R.string.error_field_required));
cancel = true;
else if (!ValidationUtil.isNameValid(name))
view.setNameError(context.getString(R.string.error_profile_name_length));
cancel = true;
if (!cancel)
view.showProgress();
profile.setUsername(name);
createOrUpdateProfile(imageUri);
);
private void createOrUpdateProfile(Uri imageUri)
profileManager.createOrUpdateProfile(profile, imageUri, (boolean success) ->
ifViewAttached(view ->
view.hideProgress();
if (success)
onProfileUpdatedSuccessfully();
// ----- HERE -----
System.exit(0);
// I can't call finish(), but can call System.exit().
else
view.showSnackBar(R.string.error_fail_create_profile);
);
);
protected void onProfileUpdatedSuccessfully()
ifViewAttached(BaseView::finish);
启动一个 Intent 将用户发送回 LoginActivity(它将检查是否有用户)将是最好的解决方案,但问题是我无法启动一个 Intent(它说:“无法解析构造函数")。
【问题讨论】:
1) 为了尽快获得更好的帮助,edit 添加minimal reproducible example 或Short, Self Contained, Correct Example。 2) 全部小写的单词难以阅读,例如试图听某人喃喃自语。请在句子的开头使用大写字母来表示单词 I,以及像ArrayList
或 Oracle 这样的专有名称。 3) 源代码中的一个空白行是永远需要的。
之后或
之前的空行通常也是多余的。
感谢您指出这一点,英语。不是我的母语,我知道我在这方面有很多错误。
您只能在Activity
上调用finish()
。您发布的代码不是Activity
。
@DavidWasser 看起来像答案 - 不妨将其发布给未来的用户。
我知道我的朋友,我的问题是如何在 UP POST 中的活动完成后循环它以完成?
【参考方案1】:
您只能通过Activity
呼叫finish()
。您发布的代码不是Activity
。
【讨论】:
以上是关于Android:无法调用完成()的主要内容,如果未能解决你的问题,请参考以下文章