【问题标题】:android settext for textview from relative weakreference来自相对弱引用的文本视图的android settext
【发布时间】:2017-11-17 11:32:37
【问题描述】:

我有一个 Activity 和一个名为 InnerClass 的内部类,它的 updateAfterDelay() 方法必须更新 TextView 。我想避免内存泄漏。所以我将InnerClass 更改为静态并尝试像这样使用WeakReference

public class MainActivity extends Activity {

    TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.main );

        textView = (TextView) findViewById ( R.id.textView );
    }

    private static class InnerClass {

        private final WeakReference<TextView> targetTextView;

        public InnerClass(TextView targetTextView) {
            this.targetTextView = new WeakReference<TextView> ( targetTextView );
        }

        void updateAfterDelay() {
            targetTextView.setText ( "text" );
        }

    }

}

但是在targetTextView.setText ( "text" ); 我得到这个编译错误:

cannot resolve method 'setText(java.lang.String)'

我该如何解决上述问题?

【问题讨论】:

    标签: android android-activity memory-leaks weak-references


    【解决方案1】:

    必须是targetTextView.get().setText("")

    【讨论】:

      【解决方案2】:

      获取 TextView 并设置文本。

      targetTextView.get().setText ( "text" ); 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多