java - 更改另一个线程中的 snackbar 文本

标签 java android android-snackbar snackbar

显示 Snackbar 后,我运行一个线程来执行操作。我想根据此线程的当前进度更改文本。

我创建 Snackbar:

private View snackbarview;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton upload = (FloatingActionButton) findViewById(R.id.upload);
    upload.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Confirm ?", Snackbar.LENGTH_SHORT)
                    .setAction("YES", new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {
                            lauchMyThread();
                            Snackbar snackbarconfirm = Snackbar.make(view, "Working...", Snackbar.LENGTH_INDEFINITE);
                            snackbarconfirm.show();
                            snackbarview = snackbarconfirm.getView();
                        }
                    }).show();
        }
    });
}

我尝试在 Runnable() 的 run() 方法中更新其文本:

 public void run() {

            TextView tv = (TextView) snackbarview.findViewById(android.support.design.R.id.snackbar_text);

            try {

                tv.post(new Runnable() {
                    public void run() {
                        TextView tv = (TextView) snackbarview.findViewById(android.support.design.R.id.snackbar_text);
                        tv.setText("Task 1 performed.");
                    }
                });

                // and so on...
            }
 }

此方法适用于 Textview,但使用 Snackbar 会崩溃:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.View.findViewById(int)' on a null object reference

如何解决?

最佳答案

您应该在 snackbarview 初始化后启动线程。

关于java - 更改另一个线程中的 snackbar 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41533764/

相关文章:

java - java代码性能分析工具

java - 如何将货币格式的字符串转换回 BigDecimal? (使用 Java 数字格式)

android - 如何清理textureview的内容。我在 ListView 中使用带有纹理 View 的媒体播放器

Android 无法在 Material Snackbar 上调用 setAnchorView

android - 将 snackbar 移到底部栏上方

Java JDK 问题或其他问题

Java BufferedReader FileReader问题

android - Android Design Support Library 有哪些新功能以及如何使用它的 Snackbar?

Java If/else 字符变化

Android 视频流 - 设备支持吗?