繁体   English   中英

将 android.support.v4.app.FragmentActivity$NonConfigurationInstances 转换为我的 AsyncTask 时出错

[英]Error casting android.support.v4.app.FragmentActivity$NonConfigurationInstances to my AsyncTask

我面临代码行问题:

mt=(MyTask)getLastNonConfigurationInstance();

mt 是 MyTask 类的实例

static class MyTask extends AsyncTask<String,Integer,Void>
    {
        MainActivity activity;
        void link (MainActivity act)
        {
            activity=act;
        }
        void unlink()
        {

            activity=null;
        }

        @Override
        protected Void doInBackground(String... params) {

            try{
                for(int i=1;i<=10;i++){
                    TimeUnit.SECONDS.sleep(1);
                    publishProgress(i);
                    Log.d("qwe", "i = " + i
                            + ", MyTask: " + this.hashCode()
                            + ", MainActivity: " + activity.hashCode());

                }
            }
            catch (InterruptedException ie)
            {
                ie.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
            activity.tv.setText("i = "+values[0]);
        }
    }

我将它保存在 onRetainCustomNonConfigurationInstance 方法中

  @Override
    public Object onRetainCustomNonConfigurationInstance() {
        mt.unlink();
        return mt;
    }

当我尝试将值从配置实例传递给 mt 时出现错误,错误消息是

java.lang.ClassCastException: android.support.v4.app.FragmentActivity$NonConfigurationInstances 不能转换为 com.example.bermud06.p091_asynctaskdisplayrotate.MainActivity$MyTask

使用 API 级别 22 的 nexus 5 设备。

请改用getLastCustomNonConfigurationInstance() 来自FragmentActivity的文档:

public Object onRetainCustomNonConfigurationInstance()

使用它代替onRetainNonConfigurationInstance() 稍后使用getLastCustomNonConfigurationInstance()检索。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM