ボタンのテキストを変更し、ユーザーの時刻を計時するリスナーがいます。また、ユーザーが時間を計ったときに、新しい合計作業時間に変更されるはずのテキストビューもあります。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());
アクティビティ自体にコードを入れることを考えていたのですが、こうすればできる気がします。リスナーのように呼び出すことができるものが欲しいので、コードの冗長性を減らします。nullであるのはhoursTotalTextViewであることを再確認しました。しかし、ボタンはそうではありません。何か案は?