我正在尝试使用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新手。