Java 将android.support.v4.app.FragmentActivity$NonConfigurationInstances强制转换到我的AsyncTask时出错

Java 将android.support.v4.app.FragmentActivity$NonConfigurationInstances强制转换到我的AsyncTask时出错,java,android,types,casting,Java,Android,Types,Casting,我面临代码行的问题: mt=(MyTask)getLastNonConfigurationInstance(); mt是MyTask类的实例 static class MyTask extends AsyncTask<String,Integer,Void> { MainActivity activity; void link (MainActivity act) { activity=act;

我面临代码行的问题:

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]);
        }
    }
当我尝试将值从配置实例传递到mt时,出现错误,错误消息为

java.lang.ClassCastException: android.support.v4.app.FragmentActivity$NonConfigurationInstances 不能投靠 com.example.bermud06.p091\u asynctaskdisplayrotate.main活动$MyTask

使用API级别为22的nexus 5设备。请改用。从以下文件:

公共对象onRetainStatonConfiguration()

使用此选项而不是
onretainonconfigurationinstance()
。稍后检索 使用
GetLastCustomNonfigurationInstance()


您是否尝试过使用中指定的
getLastCustomNonConfigurationInstance()
来代替?它成功了!谢谢,帕蒂桑,非常感谢!NP我也把它写下来作为答案。
  @Override
    public Object onRetainCustomNonConfigurationInstance() {
        mt.unlink();
        return mt;
    }