我很遗憾不得不提出这个问题,因为这简直太痛苦了。
按下按钮,我尝试从基于时间的EditText读取文本,执行计算,然后将第二个基于时间的EditText或TextView设置为计算结果。无论我尝试什么,我的应用程序继续崩溃与CallStack中的以下内容:
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.timesheethelper.MainActivity.onCalculateClicked(MainActivity.java:48)
我的代码如下:
public void onCalculateClicked(View view)
{
//EditText start_ET = (EditText)view.findViewById(R.id.start_editText);
//EditText end_ET = (EditText)view.findViewById(R.id.end_editText);
TextView test = (TextView)view.findViewById(R.id.textView);
test.setText("6:30");
}
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Calculate"
android:id="@+id/calculate_button"
android:layout_below="@+id/end_editText"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:onClick="onCalculateClicked" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView"
android:layout_alignTop="@+id/end_editText"
android:layout_alignRight="@+id/calculate_button"
android:layout_alignEnd="@+id/calculate_button" />
我花了更多的时间来弄清楚我的问题而不是我承认并且我并不期待它是一个巨大的东西。我对Android开发相当新,所以我确信它是一个小小的疏忽。任何指导我正确方向的帮助表示赞赏!
答案 0 :(得分:2)
因为你做错了! onCalculateClicked
是按钮calculate_button
的onClick回调,传递的参数是它的引用。在这里,您尝试从test
按钮获取文本视图calculate_button
,这显然不在按钮内。
我想你的代码是在一个活动中
替换
TextView test = (TextView)view.findViewById(R.id.textView);
与
TextView test = (TextView)findViewById(R.id.textView);
如果它在片段中,则使用
TextView test = (TextView)getActivity().findViewById(R.id.textView);