在进行一些基本的交互后旋转我的Android应用程序时出现问题,我一直收到空错误;
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference
虽然我知道错误意味着什么,但我看不出旋转设备时会发生什么原因(在我的物理开发设备和模拟器中都会发生)。它抱怨的代码是(在片段中的onAttach方法中);
TextView totalMatchGoals = (TextView) getView().findViewById(R.id.txtResInfoGoals);
旋转设备会导致视图刷新吗?即便如此,我也想不出为什么会导致问题。
感谢所有帮助。
答案 0 :(得分:0)
在充气布局后,在onCreateView()
内进行检查,或在视图确实存在时进行onViewCreated()
。
答案 1 :(得分:-1)
如果您尚未配置AndroidManifest.xml,则在检测到方向更改时,Android会销毁并重新创建整个活动。
重新创建活动时,会在填充视图之前调用onAttach,具体如下:https://developer.android.com/reference/android/app/Fragment.html
如果您想要处理活动代码中的方向更改,请添加以下内容:
的AndroidManifest.xml
<activity
android:name="<your-activity>"
android:configChanges="orientation|screenSize"
...
在您的Activity类中,重写此方法以处理方向更改:
@Override
public void onConfigurationChanged(Configuration newConfig) {}
更多信息: