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:无法调用完成()的主要内容,如果未能解决你的问题,请参考以下文章

Android - 调用 bindservice 但无法访问该服务中的任何方法

Android:当所有异步调用完成时通知

Android:由于依赖项冲突,无法完成安装[重复]

android - 从活动调用完成会破坏托管片段吗?

无法完成离子电容器添加android命令

Android Kotlin 无法从另一个活动中获取结果