gpt4 book ai didi

java - 如何定义计数器不通过重新启动 Activity 重置?

转载 作者:行者123 更新时间:2023-11-29 05:20:53 26 4
gpt4 key购买 nike

我的代码中定义了两个计数器。

当对单个用户 ID 的正确答案被添加到 true_counter 时,如果错误的 Material 被添加到 fales_counter 则对用户的错误答案被添加到 fales_counter ,但问题是当 Activity 将计数器重新加载为零时 as 。

package com.Learning.math;

import java.util.Random;

import org.w3c.dom.Text;

import com.Learning.math.R;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

public class Plus extends Activity {
private TextView num11;
private TextView num22;
public Integer no1;

public Integer no2;
Button btn;

@Override
protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.plus_page);
// Set Numbers To TextView's
num11 = (TextView) findViewById(R.id.num1);
num22 = (TextView) findViewById(R.id.num2);
Intent iin = getIntent();
Bundle b = iin.getExtras();
if (b != null) {
final String numb1 = (String) b.get("from");
final String numb2 = (String) b.get("to");
Integer min = Integer.valueOf(numb1);
Integer max = Integer.valueOf(numb2);
Random r1 = new Random();
int random1 = r1.nextInt(max + -min) + min;
Random r2 = new Random();
int random2 = r2.nextInt(max - min) + min;
String str1 = String.valueOf(random1);
String str2 = String.valueOf(random2);
num11.setText(str1 + "");
num22.setText(str2 + "");
no1 = Integer.valueOf(str1);
no2 = Integer.valueOf(str2);
}

final EditText answerbox = (EditText) findViewById(R.id.answer_box);
final ImageView true_pic = (ImageView) findViewById(R.id.imageView1);
final ImageView false_pic = (ImageView) findViewById(R.id.imageView2);
final Handler handler = new Handler();
final TextView afarin = (TextView) findViewById(R.id.afarin_txt);
final TextView try_again = (TextView) findViewById(R.id.try_again_txt);
final TextView false_counter_txt = (TextView) findViewById(R.id.true_counter);
final TextView true_counter_txt = (TextView) findViewById(R.id.false_counter);
// تعریف فونت طناب
Typeface tf = Typeface
.createFromAsset(getAssets(), "fonts/tanab_0.ttf");
afarin.setTypeface(tf);
try_again.setTypeface(tf);
// /////////////
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {

private int true_counter;
private int false_counter;

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
String Answr = answerbox.getText().toString();
Integer answer = Integer.valueOf(Answr);
if (answer == (no2 + no1)) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Do something after 3s = 3000ms
startActivity(getIntent());
}
}, 2000);

hideSoftKeyboard(Plus.this);
true_pic.setVisibility(View.VISIBLE);
afarin.setVisibility(View.VISIBLE);
true_counter++;
true_counter_txt.setText(Integer.toString(true_counter));
} else {
handler.postDelayed(new Runnable() {
@Override
public void run() {
// Do something after 3s = 3000ms
startActivity(getIntent());
}
}, 2000);
hideSoftKeyboard(Plus.this);
false_pic.setVisibility(View.VISIBLE);
try_again.setVisibility(View.VISIBLE);
false_counter++;
false_counter_txt.setText(Integer.toString(false_counter));
}
}
});
}

// /////////// Hide Keyboard When Clicking
public static void hideSoftKeyboard(Activity activity) {
InputMethodManager inputMethodManager = (InputMethodManager) activity
.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus()
.getWindowToken(), 0);
}

}

最佳答案

您需要覆盖 onSaveInstanceState() 方法来写入计数器值并使用 onCreate(Bundle) 方法来读取计数器值(空检查使用前的 bundle )。

使用 static 不好,因为如果您的应用程序在后台关闭并稍后恢复,它就会消失。

使用 sharedPreferences 也可以,但它更适合长期存储(在应用程序的多次运行中保持不变),而实例状态旨在用于短期使用(在单次运行中保持不变)运行您的应用程序)。可以将其视为使用共享首选项来存储高分和实例状态来存储当前游戏的数据。

关于java - 如何定义计数器不通过重新启动 Activity 重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24818882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com