Java 当我离开活动时,如何停止测验倒计时?
嘿,伙计们,我这里有一个简单的测试代码,但我这里有两个问题。首先,我将在下面向您展示我的代码:Java 当我离开活动时,如何停止测验倒计时?,java,android,Java,Android,嘿,伙计们,我这里有一个简单的测试代码,但我这里有两个问题。首先,我将在下面向您展示我的代码: class SingleQuizQuestionActivity : AppCompatActivity() { val URL_QUESTION = "https://blabla.com/app/blabla/question.php" internal lateinit var b1: Button internal lateinit va
class SingleQuizQuestionActivity : AppCompatActivity() {
val URL_QUESTION = "https://blabla.com/app/blabla/question.php"
internal lateinit var b1: Button
internal lateinit var b2: Button
internal lateinit var b3: Button
internal lateinit var b4: Button
internal lateinit var back: Button
internal lateinit var bnr: TextView
internal lateinit var jlh:TextView
internal lateinit var btnscore: Button
internal lateinit var t1_question: TextView
internal lateinit var btn: Button
private lateinit var Handler : Handler
private lateinit var Runnable : Runnable
internal lateinit var reference: DatabaseReference
internal var questionNumber = 0
internal var correct = 0
internal var wrong = 0
var totall: Int = 1
lateinit var noInternetDialog: NoInternetDialog
private fun generateRandomNumbre(): Int {
var random: Int = 1
random = (1..20).random()
return random
}
override fun onBackPressed() {
val alertDialog = AlertDialog.Builder(this)
.setTitle("Keluar Game")
.setMessage("Anda Yakin Ingin Keluar Dari Game")
.setPositiveButton("Ya") { _, _ ->
super.onBackPressed()
finish()
}
.setNegativeButton("Tidak") { _, _ -> }
alertDialog.show()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_single_quiz_question)
b1 = findViewById<View>(R.id.button1) as Button
b2 = findViewById<View>(R.id.button2) as Button
b3 = findViewById<View>(R.id.button3) as Button
b4 = findViewById<View>(R.id.button4) as Button
back = findViewById<View>(R.id.backk) as Button
jlh = findViewById<View>(R.id.texttitle) as TextView
bnr = findViewById<View>(R.id.ttl) as TextView
t1_question = findViewById<View>(R.id.questionsTxt) as TextView
btn = findViewById<View>(R.id.btntimer) as Button
btnscore = findViewById<View>(R.id.btnscores) as Button
Handler = Handler()
totall = generateRandomNumbre()
question(totall.toString())
back.setOnClickListener {
onBackPressed()
}
noInternetDialog = NoInternetDialog.Builder(this)
.setBgGradientStart(ContextCompat.getColor(this, R.color.colorPrimary))
.setBgGradientCenter(ContextCompat.getColor(this, R.color.colorPrimary))
.setBgGradientEnd(ContextCompat.getColor(this, R.color.colorPrimary))
.setWifiLoaderColor(ContextCompat.getColor(this, R.color.colorWhite))
.setButtonTextColor(ContextCompat.getColor(this,R.color.black))
.setButtonIconsColor(ContextCompat.getColor(this,R.color.black))
.setButtonColor(ContextCompat.getColor(this, R.color.colorAccent)).build()
}
inner class MyCounter(millisInFuture: Long, countDownInterval: Long) : CountDownTimer(millisInFuture, countDownInterval) {
override fun onFinish() {
wrong++
question(totall.toString())
}
override fun onTick(millisUntilFinished: Long) {
btntimer.text = (millisUntilFinished / 1000).toString() + ""
println("Timer : " + millisUntilFinished / 1000)
}
}
private fun question(total: String) {
val stringRequest = object : StringRequest(Request.Method.POST, URL_QUESTION,
Response.Listener { response ->
try {
val jsonObject = JSONObject(response)
val success = jsonObject.getString("success")
val jsonArray = jsonObject.getJSONArray("question")
if (success == "1") {
for(i in 0 until jsonArray.length())
{
var `object` = jsonArray.getJSONObject(i)
var soal = `object`.getString("soal").trim()
var jawaban = `object`.getString("jawaban").trim()
var opsi1 = `object`.getString("opsi1").trim()
var opsi2 = `object`.getString("opsi2").trim()
var opsi3 = `object`.getString("opsi3").trim()
questionNumber ++
if (questionNumber > 20) {
val one = btnscore.text.toString()
val two = one.toInt()
val i = Intent(this@SingleQuizQuestionActivity, SingleQuizResultActivity::class.java)
i.putExtra("correct", correct.toString())
i.putExtra("incorrect", wrong.toString())
i.putExtra("score",two)
finish()
startActivity(i)
} else {
jlh.setText("Pertanyaan "+questionNumber.toString()+" / 20")
bnr.setText("Benar :\n"+correct.toString()+" / 20")
val timer = MyCounter(20000,1000)
timer.start()
t1_question.text = soal
var corectPos : Int = Random.nextInt(0,4)
val buttons = arrayOf(
b1,b2,b3,b4
)
val answers:Array<String?> = arrayOf(
jawaban,
opsi1,
opsi2,
opsi3
)
for(i:Int in 0 until 4){
if (i != corectPos){
if (i == 3) {
buttons[i].setText(answers[corectPos])
}
else {
buttons[i].setText(answers[i])
}
}
else{
buttons[i].setText(answers[3])
}
}
b1.setOnClickListener {
timer.cancel()
if (b1.text.toString() == jawaban) {
b1.setBackgroundResource(R.drawable.optionbnr)
b1.isEnabled = false
b2.isEnabled = false
b3.isEnabled = false
b4.isEnabled = false
Runnable = java.lang.Runnable {
correct++
b1.setBackgroundResource(R.drawable.opnormal)
b2.setBackgroundResource(R.drawable.opnormal)
b3.setBackgroundResource(R.drawable.opnormal)
b4.setBackgroundResource(R.drawable.opnormal)
b1.isEnabled = true
b2.isEnabled = true
b3.isEnabled = true
b4.isEnabled = true
updatescore()
var randomlagi = generateRandomNumbre()
question(randomlagi.toString())
}
Handler.postDelayed(Runnable,1000)
} else {
wrong++
b1.setBackgroundResource(R.drawable.optionslh)
if (b2.text.toString() == jawaban) {
b2.setBackgroundResource(R.drawable.optionbnr)
} else if (b3.text.toString() == jawaban) {
b3.setBackgroundResource(R.drawable.optionbnr)
} else if (b4.text.toString() == jawaban) {
b4.setBackgroundResource(R.drawable.optionbnr)
}
b1.isEnabled = false
b2.isEnabled = false
b3.isEnabled = false
b4.isEnabled = false
Runnable = java.lang.Runnable {
b1.setBackgroundResource(R.drawable.opnormal)
b2.setBackgroundResource(R.drawable.opnormal)
b3.setBackgroundResource(R.drawable.opnormal)
b4.setBackgroundResource(R.drawable.opnormal)
b1.isEnabled = true
b2.isEnabled = true
b3.isEnabled = true
b4.isEnabled = true
var randomlagi = generateRandomNumbre()
question(randomlagi.toString())
}
Handler.postDelayed(Runnable,1000)
}
}
b2.setOnClickListener {
timer.cancel()
if (b2.text.toString() == jawaban) {
b1.isEnabled = false
b2.isEnabled = false
b3.isEnabled = false
b4.isEnabled = false
b2.setBackgroundResource(R.drawable.optionbnr)
Runnable = java.lang.Runnable {
correct++
b1.setBackgroundResource(R.drawable.opnormal)
b2.setBackgroundResource(R.drawable.opnormal)
b3.setBackgroundResource(R.drawable.opnormal)
b4.setBackgroundResource(R.drawable.opnormal)
b1.isEnabled = true
b2.isEnabled = true
b3.isEnabled = true
b4.isEnabled = true
updatescore()
var randomlagi = generateRandomNumbre()
question(randomlagi.toString())
}
Handler.postDelayed(Runnable,1000)
} else {
wrong++
b2.setBackgroundResource(R.drawable.optionslh)
if (b1.text.toString() == jawaban) {
b1.setBackgroundResource(R.drawable.optionbnr)
} else if (b3.text.toString() == jawaban) {
b3.setBackgroundResource(R.drawable.optionbnr)
} else if (b4.text.toString() == jawaban) {
b4.setBackgroundResource(R.drawable.optionbnr)
}
b1.isEnabled = false
b2.isEnabled = false
b3.isEnabled = false
b4.isEnabled = false
Runnable = java.lang.Runnable {
b1.setBackgroundResource(R.drawable.opnormal)
b2.setBackgroundResource(R.drawable.opnormal)
b3.setBackgroundResource(R.drawable.opnormal)
b4.setBackgroundResource(R.drawable.opnormal)
b1.isEnabled = true
b2.isEnabled = true
b3.isEnabled = true
b4.isEnabled = true
var randomlagi = generateRandomNumbre()
question(randomlagi.toString())
}
Handler.postDelayed(Runnable,1000)
}
}
b3.setOnClickListener {
timer.cancel()
if (b3.text.toString() == jawaban) {
b1.isEnabled = false
b2.isEnabled = false
b3.isEnabled = false
b4.isEnabled = false
b3.setBackgroundResource(R.drawable.optionbnr)
Runnable = java.lang.Runnable {
correct++
b1.setBackgroundResource(R.drawable.opnormal)
b2.setBackgroundResource(R.drawable.opnormal)
b3.setBackgroundResource(R.drawable.opnormal)
b4.setBackgroundResource(R.drawable.opnormal)
b1.isEnabled = true
b2.isEnabled = true
b3.isEnabled = true
b4.isEnabled = true
updatescore()
var randomlagi = generateRandomNumbre()
question(randomlagi.toString())
}
Handler.postDelayed(Runnable,1000)
} else {
wrong++
b3.setBackgroundResource(R.drawable.optionslh)
if (b1.text.toString() == jawaban) {
b1.setBackgroundResource(R.drawable.optionbnr)
} else if (b2.text.toString() == jawaban) {
b2.setBackgroundResource(R.drawable.optionbnr)
} else if (b4.text.toString() == jawaban) {
b4.setBackgroundResource(R.drawable.optionbnr)
}
b1.isEnabled = false
b2.isEnabled = false
b3.isEnabled = false
b4.isEnabled = false
Runnable = java.lang.Runnable {
b1.setBackgroundResource(R.drawable.opnormal)
b2.setBackgroundResource(R.drawable.opnormal)
b3.setBackgroundResource(R.drawable.opnormal)
b4.setBackgroundResource(R.drawable.opnormal)
b1.isEnabled = true
b2.isEnabled = true
b3.isEnabled = true
b4.isEnabled = true
var randomlagi = generateRandomNumbre()
question(randomlagi.toString())
}
Handler.postDelayed(Runnable,1000)
}
}
b4.setOnClickListener {
timer.cancel()
if (b4.text.toString() == jawaban) {
b4.setBackgroundResource(R.drawable.optionbnr)
b1.isEnabled = false
b2.isEnabled = false
b3.isEnabled = false
b4.isEnabled = false
Runnable = java.lang.Runnable {
correct++
b1.setBackgroundResource(R.drawable.opnormal)
b2.setBackgroundResource(R.drawable.opnormal)
b3.setBackgroundResource(R.drawable.opnormal)
b4.setBackgroundResource(R.drawable.opnormal)
b1.isEnabled = true
b2.isEnabled = true
b3.isEnabled = true
b4.isEnabled = true
var randomlagi = generateRandomNumbre()
question(randomlagi.toString())
updatescore()
}
Handler.postDelayed(Runnable,1000)
} else {
wrong++
b4.setBackgroundResource(R.drawable.optionslh)
if (b1.text.toString() == jawaban) {
b1.setBackgroundResource(R.drawable.optionbnr)
} else if (b2.text.toString() == jawaban) {
b2.setBackgroundResource(R.drawable.optionbnr)
} else if (b3.text.toString() == jawaban) {
b3.setBackgroundResource(R.drawable.optionbnr)
}
b1.isEnabled = false
b2.isEnabled = false
b3.isEnabled = false
b4.isEnabled = false
Runnable = java.lang.Runnable {
b1.setBackgroundResource(R.drawable.opnormal)
b2.setBackgroundResource(R.drawable.opnormal)
b3.setBackgroundResource(R.drawable.opnormal)
b4.setBackgroundResource(R.drawable.opnormal)
b1.isEnabled = true
b2.isEnabled = true
b3.isEnabled = true
b4.isEnabled = true
var randomlagi = generateRandomNumbre()
question(randomlagi.toString())
}
Handler.postDelayed(Runnable,1000)
}
}
}
}
}
} catch (e: JSONException) {
e.printStackTrace()
// Toast.makeText(activity, "Error $e", Toast.LENGTH_SHORT).show()
}
}, Response.ErrorListener { error -> }) {
@Throws(AuthFailureError::class)
override fun getParams(): Map<String, String> {
val params = java.util.HashMap<String, String>()
params["total"] = total
return params
}
}
val requestQueue = Volley.newRequestQueue(this)
requestQueue.add(stringRequest)
}
private fun updatescore(){
val one = btnscore.text.toString()
val time = btntimer.text.toString()
val two = one.toInt()
val timee = time.toInt()
var tri = 0
if (timee > 9)
{
tri = two + (10*1)
}
else
{
tri = two + (1 * timee)
}
val four = tri.toString()
btnscore.text = four
}
}
var corectPos : Int = Random.nextInt(0,4)
val buttons = arrayOf(
b1,b2,b3,b4
)
val answers:Array<String?> = arrayOf(
jawaban,
opsi1,
opsi2,
opsi3
)
for(i:Int in 0 until 4){
if (i != corectPos){
if (i == 3) {
buttons[i].setText(answers[corectPos])
}
else {
buttons[i].setText(answers[i])
}
}
else{
buttons[i].setText(answers[3])
}
}
我的计时器:
inner class MyCounter(millisInFuture: Long, countDownInterval: Long) : CountDownTimer(millisInFuture, countDownInterval) {
override fun onFinish() {
wrong++
question(totall.toString())
}
override fun onTick(millisUntilFinished: Long) {
btntimer.text = (millisUntilFinished / 1000).toString() + ""
println("Timer : " + millisUntilFinished / 1000)
}
}
```
在onPause()方法中停止计时器,然后在您想使用它时再次启动。您可以调用onPause,这将帮助您在用户切换应用程序或切换时停止计时器activity@Ashish谢谢,但你能给我举个例子吗。因为我从不使用暂停?
inner class MyCounter(millisInFuture: Long, countDownInterval: Long) : CountDownTimer(millisInFuture, countDownInterval) {
override fun onFinish() {
wrong++
question(totall.toString())
}
override fun onTick(millisUntilFinished: Long) {
btntimer.text = (millisUntilFinished / 1000).toString() + ""
println("Timer : " + millisUntilFinished / 1000)
}
}
```
Please read this article:>