Ich habe ein Problem mit der Änderung Fragments
. In meiner App verwende ich TimerTisk
für die Aktualisierung TextView
jede Sekunde (Timer für Benutzer), wenn wir Fragment
ändern, haben wir NullPointerException
. Ich weiß, warum das passiert, aber ich kann nicht aufhören TimerTask
, weil mein Timer für Benutzer arbeiten sollte, bis Benutzer ihn selbst stoppen. Wie kann ich dieses Problem lösen, wie Timer im Hintergrund arbeiten könnte? Mein Fragment
:wie man das Fragment ändert, ohne TimerTask zu stoppen. 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;
}
}
}
Der Code funktioniert gut, bis wir Fragment
ändern. Ich bin neu in Android
und das meine erste App. Vielen Dank für jede Hilfe.
Danke. Ich werde es versuchen. – Tash