如何从静态方法更改TextView文本?

The Useracc awd

我的应用程序内部有一个不断增加的值,该处理程序是在“ EventHandlerClass.java”内部的静态方法中执行的。现在,我想在MainActivity的TextView上显示此值。

这是我的处理程序的静态方法:

public static void pointsCounter() {
        handler = new Handler(Looper.getMainLooper());

        runnable = new Runnable() {
            public void run() {
                points = points + 5;
                String pointMsg = "Points: " + points;
                MainActivity.coinsTextView.setText(pointMsg);
                 
                handler.postDelayed(this, 1000);
            }
        };
        handler.postDelayed(runnable, 1000);
    }

从EventHandlerClass.java内部的另一个静态方法中调用了pointsCounter方法。

它每秒增加点值+5,我希望它显示在TextView中。正确的做法是什么?因为当我以这种方式尝试时,必须使MainActivity中的coinTextView成为静态,所以我们都知道您不能从静态上下文中引用非静态变量。当我这样做时,它告诉我“请勿将Android上下文类放在静态字段中;这是内存泄漏”。所以我的问题是如何从静态方法更新UI元素而又不会冒内存泄漏的危险?正确的做法是什么?

谢伊·金(Shay Kin)

正如您所说的“从不在应用程序中放置静态视图或上下文”,因为它会引起异常的内存泄漏,但是,如果您仍然想在应用程序中使用静态TextView,则可以将TextView包装在WeakReference中:

WeakReference:弱引用是指不足以将对象保留在内存中的引用。如果我们尝试确定是否强烈引用了该对象,而该对象恰好是通过WeakReferences进行的,则该对象将被垃圾回收。这个例子如何使用它:

public class MainActivity extends AppCompatActivity {
    private static WeakReference<TextView> viewWeakReference;
    private static Handler handler;
    private static int points;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
        textView = findViewById(R.id.textV);
        viewWeakReference = new WeakReference<>(textView);
        pointsCounter();
    }


    public static void pointsCounter() {
        handler = new Handler(Looper.getMainLooper());

        Runnable runnable = new Runnable() {
            public void run() {
                points = points + 5;
                String pointMsg = "Points: " + points;
                viewWeakReference.get().setText(pointMsg);
                handler.postDelayed(this, 1000);
            }
        };
        handler.postDelayed(runnable, 1000);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从静态方法更改TextView文本?

来自分类Dev

如何从另一个线程的静态方法更改文本框的文本?

来自分类Dev

如何更改TextView部分的文本颜色?

来自分类Dev

如何从片段中的OnListItemClick更改TextView的文本

来自分类Dev

如何更改介绍滑块中的 TextView 文本?

来自分类Dev

Android更改TextView文本

来自分类Dev

静态方法如何更改变量?(Java)

来自分类Dev

在静态Web方法中更改服务器控件的文本

来自分类Dev

如何使用内部html更改网页中的静态文本?

来自分类Dev

如何在选择时更改TextView文本颜色?

来自分类Dev

如何更改按钮单击时的textView的文本大小?

来自分类Dev

如何根据变量更改TextView(在listview中)的文本颜色?

来自分类Dev

如何从Xamarin.forms中的事件更改TextView中的文本

来自分类Dev

不断在TextView上设置动画,并使用“运行”方法和处理程序不断在TextView上更改文本

来自分类Dev

在ListView中更改TextView的文本

来自分类Dev

根据TextView更改文本的大小

来自分类Dev

Android在TextView中更改文本

来自分类Dev

如何设置TextView的文本?

来自分类Dev

如何在运行时更改textview中特定文本的文本颜色?

来自分类Dev

如何更改textview数据

来自分类Dev

如何在运行时更改静态方法的行为?

来自分类Dev

如何从静态方法更改C ++中的对象属性

来自分类Dev

如何使用静态方法在模拟对象上更改值?

来自分类Dev

使用静态方法更改静态变量

来自分类Dev

如何从另一个类的静态方法更改静态变量的值

来自分类Dev

如何从另一个类的静态方法更改静态变量的值

来自分类Dev

TextView中动态文本颜色更改的最有效方法

来自分类Dev

在TextView中进行动态文本颜色更改的最有效方法

来自分类Dev

停止更改文本颜色在TextView上的ClickableSpan

Related 相关文章

  1. 1

    如何从静态方法更改TextView文本?

  2. 2

    如何从另一个线程的静态方法更改文本框的文本?

  3. 3

    如何更改TextView部分的文本颜色?

  4. 4

    如何从片段中的OnListItemClick更改TextView的文本

  5. 5

    如何更改介绍滑块中的 TextView 文本?

  6. 6

    Android更改TextView文本

  7. 7

    静态方法如何更改变量?(Java)

  8. 8

    在静态Web方法中更改服务器控件的文本

  9. 9

    如何使用内部html更改网页中的静态文本?

  10. 10

    如何在选择时更改TextView文本颜色?

  11. 11

    如何更改按钮单击时的textView的文本大小?

  12. 12

    如何根据变量更改TextView(在listview中)的文本颜色?

  13. 13

    如何从Xamarin.forms中的事件更改TextView中的文本

  14. 14

    不断在TextView上设置动画,并使用“运行”方法和处理程序不断在TextView上更改文本

  15. 15

    在ListView中更改TextView的文本

  16. 16

    根据TextView更改文本的大小

  17. 17

    Android在TextView中更改文本

  18. 18

    如何设置TextView的文本?

  19. 19

    如何在运行时更改textview中特定文本的文本颜色?

  20. 20

    如何更改textview数据

  21. 21

    如何在运行时更改静态方法的行为?

  22. 22

    如何从静态方法更改C ++中的对象属性

  23. 23

    如何使用静态方法在模拟对象上更改值?

  24. 24

    使用静态方法更改静态变量

  25. 25

    如何从另一个类的静态方法更改静态变量的值

  26. 26

    如何从另一个类的静态方法更改静态变量的值

  27. 27

    TextView中动态文本颜色更改的最有效方法

  28. 28

    在TextView中进行动态文本颜色更改的最有效方法

  29. 29

    停止更改文本颜色在TextView上的ClickableSpan

热门标签

归档