gpt4 book ai didi

java - 如何在类里面成功回调时调用 toast 消息

转载 作者:行者123 更新时间:2023-11-29 09:59:03 26 4
gpt4 key购买 nike

我正在使用 okhttp 库开发 POST API。一切正常,除了我无法找到一种方法来在它的成功回调中显示简单的 toast 消息。我如何向用户调用 toast 消息,以便他在成功和失败回调中知道数据是否已发布到服务器上?

P.S 下面的代码在不同的类中,不在 Activity 类中。

这是我的代码:

public DataSource(Context context) {
this.mContext = context;
mDbHelper = new DBHelper(mContext);
mDatabase = mDbHelper.getWritableDatabase();
}



post(URL, jsonData, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
Log.i("FAILED", "onFailure: Failed to upload data to server");
//here I want to show toast message
}

@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.isSuccessful()) {

Log.i("SUCCESSFUL", "onSuccess: data uploaded");

//here I want to show toast message

} else {
Log.i("UN SUCCESSFUL", "onFailure: Failed to upload data to server");
//here I want to show toast message
}
}
});

最佳答案

每个应用程序都有自己的特殊线程来运行 UI 对象,例如 View 对象;该线程称为 UI 线程。只有在 UI 线程上运行的对象才能访问该线程上的其他对象。因为您在线程池的线程上运行的任务不会在您的 UI 线程上运行,所以它们无权访问 UI 对象。要将数据从后台线程移动到 UI 线程,请使用在 UI 线程上运行的处理程序,或者可以使用 android 实现,如此处所示。

- 案例 1

 MyActivity.this.runOnUiThread(new Runnable() {
@Override
void run() {
Toast.makeText(MyActivity.this,
"message", Toast.LENGTH_LONG).show();
});

- 案例 2

new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
Toast.makeText(MyActivity.this,
"message", Toast.LENGTH_LONG).show();
}
});

如果它是主线程你会直接使用它

Toast.makeText(MyActivity.this,
"message", Toast.LENGTH_LONG).show();

关于java - 如何在类里面成功回调时调用 toast 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48416459/

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