Faw*_*zan 8 android android-fragments
我CountDownTimer在片段中使用a 并试图在用户点击手机中的物理后退按钮时停止它.我试图压倒一切的onPause,onDestroy,onStop,onDestroyView但似乎没有奏效.有点迷失在这里.有人可以给我一个指针吗?
public class Foo extends Fragment {
CountDownTimer myTimer;
@Override
public void onStop() {
super.onStop();
myTimer.cancel();
}
@Override
public void onPause() {
super.onPause();
myTimer.cancel();
}
@Override
public void onDestroyView() {
super.onDestroyView();
myTimer.cancel();
}
@Override
public void onDestroy() {
super.onDestroy();
myTimer.cancel();
}
@OnClick(R.id.btn_greenleft_no)
public void goBack() {
myTimer.cancel();
Objects.requireNonNull(getActivity()).onBackPressed();
}
@OnClick(R.id.btn_greenright_yes)
public void showSuccess(View view) {
markAll();
myTimer.cancel();
(new MusicPlayer()).playSound(getContext(), "cheers.mp3");
final Snackbar snackbar = Snackbar.make(snackBarView, R.string.congratulations, Snackbar.LENGTH_SHORT);
snackbar.show();
myTimer.cancel();
}
private void startTimer(final View view) {
int Seconds = 5;
myTimer = new CountDownTimer(Seconds * 1000 + 1000, 1000) {
public void onTick(long millisUntilFinished) {
String rem = String.valueOf(millisUntilFinished / 1000);
Log.d("APP_DEBUG", "Timer: " + rem);
}
public void onFinish() {
goBack();
}
}.start();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的2美分.片段没有类中存在的onBackPressed()方法Activity.当用户按下物理后退按钮时,它会被调用.这是文档说的:
当活动检测到用户按下后退键时调用.默认实现只是完成当前活动,但您可以覆盖它以执行您想要的任何操作.
您可以做的是覆盖片段onBackPressed()的父活动中的方法Foo,然后使用接口与用户按下后退按钮的片段进行通信.在片段内,您可以使用所需的代码来取消计时器.这个答案在问题中如何实现onBackPressed()的片段?可以帮助您提供示例代码.
| 归档时间: |
|
| 查看次数: |
367 次 |
| 最近记录: |