Java 如何更新android textview的文本
我正在使用java在android中创建一个问答游戏,它的第一个活动包含一个表示已获得分数的TextView,显示存储在SharedReference变量中的值,如果用户移动到另一个活动或玩游戏,该值将增加,但第一个活动中的TextView仍显示初始值(仅当我重新启动应用程序时才会显示最终值),如何在不使用startActivityforresult的情况下解决此问题 第一个活动代码Java 如何更新android textview的文本,java,android,textview,Java,Android,Textview,我正在使用java在android中创建一个问答游戏,它的第一个活动包含一个表示已获得分数的TextView,显示存储在SharedReference变量中的值,如果用户移动到另一个活动或玩游戏,该值将增加,但第一个活动中的TextView仍显示初始值(仅当我重新启动应用程序时才会显示最终值),如何在不使用startActivityforresult的情况下解决此问题 第一个活动代码 int mode4 = Activity.MODE_PRIVATE;
int mode4 = Activity.MODE_PRIVATE;
SharedPreferences data = getSharedPreferences("data", mode4);
Integer coins = data.getInt("coins", 0);
String coinsString = coins.toString();
TextView coinView = (TextView) findViewById(R.id.coins);
coinView.setText(coinsString);
public void a_click(View ClickedButton)
{
int mode=Activity.MODE_PRIVATE;
SharedPreferences my=getSharedPreferences("alpha",mode);
String z=my.getString("correct","data_loss");
SharedPreferences data=getSharedPreferences("data",mode);
Integer coins=data.getInt("coins", 0);
if(z.compareTo("1")==0)
{
int mode66=Activity.MODE_PRIVATE;
SharedPreferences my66=getSharedPreferences("session",mode66);
int zedd=my66.getInt("qnum", 1);
int coinsP=0;
if(zedd==1)
{
coinsP=coins+5;
}
if(zedd==2)
{
coinsP=coins+5;
}
if(zedd==3)
{
coinsP=coins+10;
}
if(zedd==4)
{
coinsP=coins+15;
}
if(zedd==5)
{
coinsP=coins+20;
}
if(zedd==6)
{
coinsP=coins+25;
}
qnum++;
mugu(qnum);
SharedPreferences dataP=getSharedPreferences("data",mode);
SharedPreferences.Editor e2=dataP.edit();
e2.putInt("coins", coinsP);
e2.commit();
}
最终活动代码
int mode4 = Activity.MODE_PRIVATE;
SharedPreferences data = getSharedPreferences("data", mode4);
Integer coins = data.getInt("coins", 0);
String coinsString = coins.toString();
TextView coinView = (TextView) findViewById(R.id.coins);
coinView.setText(coinsString);
public void a_click(View ClickedButton)
{
int mode=Activity.MODE_PRIVATE;
SharedPreferences my=getSharedPreferences("alpha",mode);
String z=my.getString("correct","data_loss");
SharedPreferences data=getSharedPreferences("data",mode);
Integer coins=data.getInt("coins", 0);
if(z.compareTo("1")==0)
{
int mode66=Activity.MODE_PRIVATE;
SharedPreferences my66=getSharedPreferences("session",mode66);
int zedd=my66.getInt("qnum", 1);
int coinsP=0;
if(zedd==1)
{
coinsP=coins+5;
}
if(zedd==2)
{
coinsP=coins+5;
}
if(zedd==3)
{
coinsP=coins+10;
}
if(zedd==4)
{
coinsP=coins+15;
}
if(zedd==5)
{
coinsP=coins+20;
}
if(zedd==6)
{
coinsP=coins+25;
}
qnum++;
mugu(qnum);
SharedPreferences dataP=getSharedPreferences("data",mode);
SharedPreferences.Editor e2=dataP.edit();
e2.putInt("coins", coinsP);
e2.commit();
}
覆盖resume方法并在textview中设置文本,如下所示
@Override
public void onResume() {
super.onResume(); // Always call the superclass method first
textView.setText("YourText");
}
覆盖resume方法并在textview中设置文本,如下所示
@Override
public void onResume() {
super.onResume(); // Always call the superclass method first
textView.setText("YourText");
}
调用
startActivityforresult()
并不是一个解决方案,因为它不适用于此。您应该做的只是在onResume()
中更新您的UI,当您的活动转到前台时(即当用户从其他活动返回时),将调用该UI
调用
startActivityforresult()
并不是一个解决方案,因为它不适用于此。您应该做的只是在onResume()
中更新您的UI,当您的活动转到前台时(即当用户从其他活动返回时),将调用该UI
在共享首选项中存储数据时,您可以为首选项添加侦听器,如下所示
//Here you can register for changes in preference object
preferences.registerOnSharedPreferenceChangeListener(listener);
侦听器实现如下所示
SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
// Implementation
tv.setText(prefs.getString(key, "defalut"));
}
};
在共享首选项中存储数据时,您可以为首选项添加侦听器,如下所示
//Here you can register for changes in preference object
preferences.registerOnSharedPreferenceChangeListener(listener);
侦听器实现如下所示
SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
// Implementation
tv.setText(prefs.getString(key, "defalut"));
}
};
将此代码放在主活动中
Timer().scheduleAtFixedRate(new TimerTask() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
int mode = Activity.MODE_PRIVATE;
SharedPreferences data = getSharedPreferences("data", mode);
Integer coins = data.getInt("coins", 0);
String coinsString = coins.toString();
TextView coinView = (TextView) findViewById(R.id.coins);
coinView.setText(coinsString);
}
});
}
}, 0, 500);
此代码将每隔0.5秒更新一次textview,请将此代码放入mainactivity
Timer().scheduleAtFixedRate(new TimerTask() {
public void run() {
runOnUiThread(new Runnable() {
public void run() {
int mode = Activity.MODE_PRIVATE;
SharedPreferences data = getSharedPreferences("data", mode);
Integer coins = data.getInt("coins", 0);
String coinsString = coins.toString();
TextView coinView = (TextView) findViewById(R.id.coins);
coinView.setText(coinsString);
}
});
}
}, 0, 500);
此代码将每隔0.5秒更新您的文本视图谢谢,问题已解决谢谢,问题已解决此代码也可以工作,但可能会降低应用程序的性能此代码也可以工作,但可能会降低应用程序的性能