Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何更新android textview的文本_Java_Android_Textview - Fatal编程技术网

Java 如何更新android textview的文本

Java 如何更新android textview的文本,java,android,textview,Java,Android,Textview,我正在使用java在android中创建一个问答游戏,它的第一个活动包含一个表示已获得分数的TextView,显示存储在SharedReference变量中的值,如果用户移动到另一个活动或玩游戏,该值将增加,但第一个活动中的TextView仍显示初始值(仅当我重新启动应用程序时才会显示最终值),如何在不使用startActivityforresult的情况下解决此问题 第一个活动代码 int mode4 = Activity.MODE_PRIVATE;

我正在使用java在android中创建一个问答游戏,它的第一个活动包含一个表示已获得分数的TextView,显示存储在SharedReference变量中的值,如果用户移动到另一个活动或玩游戏,该值将增加,但第一个活动中的TextView仍显示初始值(仅当我重新启动应用程序时才会显示最终值),如何在不使用startActivityforresult的情况下解决此问题

第一个活动代码

                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秒更新您的文本视图

谢谢,问题已解决谢谢,问题已解决此代码也可以工作,但可能会降低应用程序的性能此代码也可以工作,但可能会降低应用程序的性能