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);