Java 为什么将此代码放入函数不会导致空指针异常?
我在Udacity上学习谷歌的android课程,学习android和Java。目前,我正在做的项目是构建一个代表订购咖啡的应用程序。这里有一个quantity文本视图,还有一个+和-按钮,单击该按钮可以增加或减少数量,还有一个submit order按钮,该按钮调用打印订单摘要的方法 不幸的是,我丢失了应用程序的原始源代码,所以我尝试自己重新构建它。我让它工作,但不是以我最初设计的方式。我遇到的问题是,如果我引用TextView,它存储在自己方法之外订购的咖啡量,应用程序会立即因NullPointerException而崩溃。但是,如果我通过创建一个名为display(int number)的方法来引用TextView,应用程序运行良好。是什么导致此NullPointerException?我在下面提供了两个源代码的链接,其中一个工作正常,另一个立即崩溃 NullPointerException: 在此代码中导致应用程序崩溃的部分位于MainActivity.java文件的第18行 工作正常: 在本例中,在第37-39行中,我创建了一个方法,该方法包含与上面示例中相同的引用TextView的代码,稍后由+和-按钮的方法调用 谢谢大家!Java 为什么将此代码放入函数不会导致空指针异常?,java,android,nullpointerexception,Java,Android,Nullpointerexception,我在Udacity上学习谷歌的android课程,学习android和Java。目前,我正在做的项目是构建一个代表订购咖啡的应用程序。这里有一个quantity文本视图,还有一个+和-按钮,单击该按钮可以增加或减少数量,还有一个submit order按钮,该按钮调用打印订单摘要的方法 不幸的是,我丢失了应用程序的原始源代码,所以我尝试自己重新构建它。我让它工作,但不是以我最初设计的方式。我遇到的问题是,如果我引用TextView,它存储在自己方法之外订购的咖啡量,应用程序会立即因NullPoi
<TextView
android:text="Order Summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:textAllCaps="true"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:id="@+id/order_summary"
android:text="$0"/>
您忘记为第一个文本视图输入id。希望将id添加到第一个文本视图可以解决问题
findViewById
要求活动
在onCreate(Bundle)
在第一个代码示例中,您使用onCreate
方法之外的id“quantity”初始化TextView
,因此在创建活动
对象时,它将被初始化。此时,没有根视图
,因此findViewById
方法试图在视图层次结构中搜索所需的TextView
,但根视图为null
在第二个代码示例中,
findViewById
仅在onClick
方法中调用,因此只有在视图层次结构膨胀后才能调用,因此一切正常。因为它在onCreate方法之外。请将相关代码放在问题本身中,不要只在场外链接到它。抱歉,我仍然习惯于发布代码,我不确定什么是相关的或不相关的。我道歉。