gpt4 book ai didi

java - 如何从非 Activity 类更改 TextView 的值

转载 作者:行者123 更新时间:2023-12-02 01:34:33 24 4
gpt4 key购买 nike

我正在制作一个蓝牙通信应用程序。我的 MainActivity 调用 BluetoothConnection 类中的循环(用于建立蓝牙连接、发送和接收消息的脚本),该循环记录它收到的每条消息。我想在 TextView 中显示此消息。

我尝试在 MainActivity 中创建 TextView 变量,并从 BluetoothConnection 类设置其值,但以错误结束

主要 Activity :

public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{
static TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
textView = (TextView) findViewById(R.id.textView);
}
}

蓝牙连接:

            while(true)
{
try
{
bytes = mmInStream.read(buffer);
String incomingMessage = new String(buffer, 0, bytes);
Log.d(TAG, "InputStream: " + incomingMessage);

MainActivity.textView.setText(incomingMessage);
}
catch (IOException e)
{
Log.e(TAG,"write: Error reading inputStream. " + e.getMessage());
break;
}
}

我希望 TextView 发生变化,但应用程序崩溃并出现错误:'android.view.ViewRootImpl$CalledFromWrongThreadException:只有创建 View 层次结构的原始线程才能触摸其 View 。'

最佳答案

您需要将 MainActivity 的上下文传递给 BluetoothConnection.class

之后您可以执行以下操作:

    TextView txtView = (TextView) ((MainActivity)context).findViewById(R.id.your_tv);
txtView.setText("Hello");

关于java - 如何从非 Activity 类更改 TextView 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57528826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com