簡體   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