在MVP中从片段打开活动会抛出NPE

时间:2017-02-16 20:16:04

标签: android android-fragments android-intent android-activity mvp

我正在尝试使用MVP从片段中打开一个新活动,但是我收到一个NullPointerException并带有以下消息:

  

java.lang.NullPointerException:尝试在空对象引用上调用虚方法'java.lang.String android.content.Context.getPackageName()'

此刻我的实施

我的演示者

public class APIAuthPresenter implements
    GodInterface.setupAuth{
private WeakReference<GodInterface.setupAuth> mView;

public APIAuthPresenter(GodInterface.setupAuth view) {
    mView = new WeakReference<>(view);
}

private GodInterface.setupAuth getView() throws NullPointerException{
    if (mView != null){
        return mView.get();
    }else{
        throw new NullPointerException("View is not available");
    }
}


@Override
public Context getAppContext() {
    try {
        return getView().getAppContext();
    }catch (NullPointerException e)        {
        return null;

    }
}

}

视图从构造函数中的Fragment传递,如此

public class IGRedirectFragment extends Fragment implements GodInterface.setupAuth {

APIAuthPresenter apiAuthPresenter = new APIAuthPresenter(this);

....

}

然后我尝试在演示者内部打开活动

getAppContext().startActivity(new Intent(getAppContext(), UserActivity.class));

这是我的界面类

public class GodInterface {
public interface setupAuth{
    String buildURL();
    void requestAccessToken(String code);
    Context getAppContext();
}
}

问题是我得到了NPE例外,我对解决这个问题的新解决方案持开放态度,因为我是MVP新手。

0 个答案:

没有答案