我在MainActivity中有一个片段并尝试在片段中设置setText,但是当我尝试这样做时,我得到Null Pointer Exception。我检查了拼写,但似乎没问题。我调试应用程序并检查这些变量但看起来它们似乎无效。
异常出现在clearText()方法的第一行。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragment_sun, container, false);
sunRiseTime = v.findViewById(R.id.sunRiseTime);
sunRiseAzimuth = v.findViewById(R.id.sunRiseAzimuth);
sunSetTime = v.findViewById(R.id.sunSetTime);
sunSetAzimuth = v.findViewById(R.id.sunSetAzimuth);
duskTime = v.findViewById(R.id.duskTime);
dawnTime = v.findViewById(R.id.dawnTime);
return v;
}
private void clearText(){
sunSetTime.setText("");
sunSetAzimuth.setText("");
sunRiseTime.setText("");
sunRiseAzimuth.setText("");
duskTime.setText("");
dawnTime.setText("");
}
错误
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
at com.example.mariusz.astroweather.SunFragment.clearText(SunFragment.java:99)
答案 0 :(得分:0)
检查并跟踪onCreateView()
内部,看看sunSetTime
TextView是否为空。您可能会遇到R.layout.fragment_sun
的备用布局,其中可能不包含sunSetTime
TextView。
如果不是这种情况,可能会在onCreateView
之前调用clearText()。