java - 如何从内部 AsyncTask 访问 fragment

标签 java android inner-classes

我有一个 Fragment 和加载文本的内部 AsyncTask:

public class TextReaderFragment extends Fragment {
    LoadTextTask task = null;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        setRetainInstance(true);

        task=new LoadTextTask();
        task.execute();
        ...
    }

    public void renderText() {
        ...
    }

    class LoadTextTask extends AsyncTask<Integer, Void, Boolean> {

        @Override
        protected void onPreExecute() {
            // how to access Fragment or Activity here?
            ProgressBar loader = (ProgressBar) findViewById(R.id.textLoadingProgressBar);
            loader.setVisibility(TextView.VISIBLE);
        }

        @Override
        protected void onPostExecute(Boolean loaded) {
            // how to trigger renderText method defined on TextReaderFragment?
            loader.setVisibility(TextView.GONE);
        }

我不明白我怎么能:

  1. onPreExecute() 方法访问 FragmentActivity 以获取在 Fragment Activity
  2. onPostExecute() 触发 renderText() 方法定义在 TextReaderFragment 中?

最佳答案

逐点回答:

  • Fragment 可以作为 TextReaderFragment.this 访问。
  • Activity 可以作为 (MyActivity)getActivity() 访问。
  • renderText() 可以使用 TextReaderFragment.this.renderText() 调用。

关于java - 如何从内部 AsyncTask 访问 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30242656/

相关文章:

java - 为什么我的 for 循环告诉我语法错误,插入 "AssignmentOperator Expression"?

.net - Android 模拟器未连接到 .Net Web 服务

java - 在java中使用内部类扩展类(并且从一个类到另一个类时也扩展内部类)

Android RecyclerView 创建并绑定(bind)数据集更改的所有 View

android - 计算两次Android之间的时间

java - 为什么javac要创建一个额外的类?

java - 非静态内部类对象在不再被引用后会被垃圾回收吗?

java - JPA where 子句

java - Play 应用程序显示编译单元不在构建路径上

java - 转换为从不同类加载器加载的类时出现 CastCastException