Android:在按钮按下时设置 EditText/TextView 文本
Android: Setting EditText/TextView text on Button Press
我很失望不得不问这个问题,因为它是如此简单。
按下按钮时,我试图从基于时间的 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 开发的新手,所以我确信这是一个小疏忽。感谢任何帮助我指明正确方向的人!
是因为你做错了! onCalculateClicked
是按钮 calculate_button
的 onClick 回调,传入的参数是它的引用。在这里,您试图从 calculate_button
按钮获取文本视图 test
,这显然不在按钮内部。
我想你的代码在 activity
替换
TextView test = (TextView)view.findViewById(R.id.textView);
和
TextView test = (TextView)findViewById(R.id.textView);
如果它在片段中则使用
TextView test = (TextView)getActivity().findViewById(R.id.textView);
我很失望不得不问这个问题,因为它是如此简单。
按下按钮时,我试图从基于时间的 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 开发的新手,所以我确信这是一个小疏忽。感谢任何帮助我指明正确方向的人!
是因为你做错了! onCalculateClicked
是按钮 calculate_button
的 onClick 回调,传入的参数是它的引用。在这里,您试图从 calculate_button
按钮获取文本视图 test
,这显然不在按钮内部。
我想你的代码在 activity
替换
TextView test = (TextView)view.findViewById(R.id.textView);
和
TextView test = (TextView)findViewById(R.id.textView);
如果它在片段中则使用
TextView test = (TextView)getActivity().findViewById(R.id.textView);