在 AsyncTask 运行时向 TextView 添加文本

Posted

技术标签:

【中文标题】在 AsyncTask 运行时向 TextView 添加文本【英文标题】:Add Text to TextView while AsyncTask Running 【发布时间】:2020-08-22 12:09:36 【问题描述】:

我正在学习AsyncTask。我想在 AyncTask 工作时添加像 Loading.... 这样的 TextView。我该怎么做呢

下面是代码

public class MainActivity extends AppCompatActivity 
private EditText et_bookInput;
private TextView tv_titleText;
private TextView tv_authorText;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    et_bookInput = findViewById(R.id.bookInput);
    tv_titleText = findViewById(R.id.titleText);
    tv_authorText = findViewById(R.id.authorText);



public void searchBooks(View view) 
    // Get the name of the book from the input field
    String queryString = et_bookInput.getText().toString();
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    if(inputMethodManager != null)
        inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    
    new FetchBook(tv_titleText, tv_authorText).execute(queryString);


【问题讨论】:

可以为 FetchBook 添加代码吗?您是否尝试过使用 onPreExecute 和 onPostExecute 函数?此外,AsyncTask 不再是在 android 上执行异步任务的首选方式,Android 推荐使用协程。 据我所知,Corountines 是 Kotlin 库,所以我可以在 java 代码中使用它吗? 【参考方案1】:

试试下面的代码:

 tv_authorText.setText("");
 tv_titleText.setText(R.string.loding);

我假设您想在tv_titleText 添加加载文本。

【讨论】:

【参考方案2】:

我已经测试了你的代码,你需要在 searchBooks(View view) 中设置 loading 文本

TextView.setText("Loading...")

【讨论】:

以上是关于在 AsyncTask 运行时向 TextView 添加文本的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 AsyncTask 在 TextView 中设置文本

在 AsyncTask 中将新的 TextView 设置为片段

重新创建活动时如何从 AsyncTask 更新 TextView

AsyncTask 的 onPostExecute 方法获取相同的参数

处理从 asynctask 获取文本的 textview

AsyncTask的onPostExecute方法获取相同的参数