我有一个监听器,它只需更改按钮的文本并为用户计时。我还有一个文本视图,它应该在用户下班时更改为新的总工作时间。我仔细检查了 xml 以确保我抓住了正确的 R.Id,并且发现侦听器中的按钮不是 TextView。这是代码:
public class HoursListener implements OnClickListener{
GlobalApp appState;
Button startStopHoursButton;
TextView hoursTotalTextView;
public boolean clockedIn;
public HoursListener(Context ctx){
appState = ((GlobalApp)ctx.getApplicationContext());
}
public void onClick(View v) {
startStopHoursButton = (Button) v.findViewById(R.id.hourstogglebutton);
hoursTotalTextView = (TextView) v.findViewById(R.id.totalWorktimeTextView);
if(!clockedIn){
startStopHoursButton.setText(R.string.clockout);
appState.getCurrentCompany().getCurrentNewWeeklyTimestamp().CreateFinishTimeStamp();
clockedIn = true;
}else{
startStopHoursButton.setText(R.string.clockin);
appState.getCurrentCompany().getCurrentNewWeeklyTimestamp().CreateFinishTimeStamp();
clockedIn = false;
hoursTotalTextView.setText(appState.getCurrentCompany().getCurrentNewWeeklyTimestamp().totalTimeDoneThisWeekToString());
}
}
}
下面是 textView 的 xml:
<TextView
android:id="@+id/totalWorktimeTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/textView2"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"/>
错误在于这一行:
hoursTotalTextView.setText(appState.getCurrentCompany().getCurrentNewWeeklyTimestamp().totalTimeDoneThisWeekToString());
我正在考虑将代码放入活动本身,但我觉得我可以这样做。我想要一些我可以像监听器一样调用的东西,所以我减少了代码中的冗余。我已经仔细检查了 hoursTotalTextView 是否为空。然而按钮不是。有任何想法吗?