Fragments
을 변경하는 데 문제가 있습니다. 내 앱에서 TimerTisk
을 TextView
초마다 업데이트 (사용자 용 타이머)하고 Fragment
을 변경하면 NullPointerException
이됩니다. 나는 왜 이것이 일어나고 있는지 알지만, 사용자가 자신을 멈출 때까지 타이머가 작동해야하기 때문에 TimerTask
을 멈출 수 없습니다. 타이머가 배경에서 어떻게 작동하는지이 문제를 어떻게 해결할 수 있습니까? 내 Fragment
: 우리가 Fragment
을 변경할 때까지TimerTask 중지없이 조각을 변경하는 방법. Android
public class WalkingFragment extends Fragment implements View.OnClickListener {
private String timeTxt = "";
TextView textViewWalkingTimer;
Button startWalkingBC;
private Timer walkingTimer;
private int period = 0;
private boolean flag = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_walking, container, false);
textViewWalkingTimer = (TextView) view.findViewById(R.id.textViewWalkingTimer);
startWalkingBC = (Button) view.findViewById(R.id.start_walking);
startWalkingBC.setOnClickListener(this);
return view;
}
public void startWalkingButtonClick() {
if (!flag) {
walkingTimer = new Timer();
walkingTimer.schedule(new TimerTask() {
@Override
public void run() {
TimerForWalking();
}
}, 0, 1000);
startWalkingBC.setText("Stop");
flag = true;
} else if (flag) {
period = 0;
if (walkingTimer != null) {
walkingTimer.cancel();
flag = false;
textViewWalkingTimer.setText("");
startWalkingBC.setText("Start");
}
}
}
private void TimerForWalking() {
this.getActivity().runOnUiThread(Timer_Tick);
}
private Runnable Timer_Tick = new Runnable() {
@Override
public void run() {
period++;
timeTxt = (new SimpleDateFormat("hh:mm:ss")).format(new Date(period * 1000));
textViewWalkingTimer.setText(timeTxt);
}
};
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.start_walking:
startWalkingButtonClick();
break;
.................
default:
break;
}
}
}
코드는 잘 작동합니다. 나는 Android
에 새로운이 첫 번째 애플 리케이션. 어떤 도움을 주셔서 감사합니다.
감사합니다. 나는 시도 할 것이다. – Tash