当我在摩托罗拉Nexus 6上运行我的应用程序时,我得到NullPointerException.Problem使用一个TextView并在同一个文本上设置文本。我在网上看到了一些解决方案,但它们都没有为我工作。我猜问题是与JVM不同智能手机,或者我的片段的生命周期嵌套在活动中。
在小型设备上一切正常。
日志吼叫:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com..data.models.entity.Email.getUsername()' on a null object reference
at com..presenter.view.fragment.ForgotPasswordFragmentComplete.onStart(ForgotPasswordFragmentComplete.java:84)
这是我的片段:
@Bind(R.id.button_resend_email)
AppCompatButton resendEmail;
@Bind(R.id.resend_user_email)AutoResizeTextView resendEmailTxt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DaggerForgotPasswordCompletedComponent.builder()
.applicationComponent(
((AndroidApplication) getActivity().getApplication()).getApplicationComponent())
.forgotPasswordCompletedModule(new ForgotPasswordCompletedModule())
.build()
.inject(this);
}
@Override
public void onStart() {
super.onStart();
realm = getRealm();
RealmQuery<Email> query1 = realm.where(Email.class);
Email result1 = query1.findFirst();
resendEmailTxt = (AutoResizeTextView) getView().findViewById(R.id.resend_user_email) ;
this.resendEmailTxt.setText(result1.getUsername());
}
@Override
public void onDestroy() {
super.onDestroy();
realm.close();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_forgot_password_fragment_complete, container, false);
}
@Override
protected int getFragmentLayoutId() {
return R.layout.fragment_forgot_password_fragment_complete;
}
答案 0 :(得分:1)
如果您获得nullPointerException
,则可能表示您的result1
变量尚未分配值。这意味着您的query1.findFirst()
可能根本没有返回任何内容。
答案 1 :(得分:0)
尝试将代码从onStart()
移至onResume()
。