2015-10-17 82 views
-2

我现在面临的问题与代码行:

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; 
    } 

抵达时出错配置实例吨,错误消息

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

使用Nexus 5的设备符合API等级22

+0

您是否按照[文档](http://developer.android.com/reference/android/support/v4/app/FragmentActivity.html)中的规定,尝试使用'getLastCustomNonConfigurationInstance()'而不是? – PPartisan

+0

它的工作!非常感谢,PPartisan! –

+0

Np。我也把它写成了答案。 – PPartisan

回答