2015-07-20 56 views
3

我得到一個錯誤Java錯誤API級方法

java.lang.NoSuchMethodError: android.app.Activity.isDestroyed

它有事情做,只有在其上的API 17或更高版本的設備上運行,反正是有解決這個?

 private WeakReference<Activity> mActivityRef; 

    @Override 
     public void onFinish() { 

      Activity activity = mActivityRef.get(); 
//   if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
//do your thing! 

       if (activity != null && !activity.isFinishing() && !activity.isDestroyed()) { 
        activity.startActivity(new Intent(activity, ListOfAlarms.class)); 
        activity.finish(); 
       } 
       mStarted = false; 

//   } 
//   Intent goBack = new Intent(CountDownAct.this, ListOfAlarms.class); 
//   startActivity(goBack); 
//   finish(); 
     } 
+0

你是什麼Manif est.xml配置?看來你正在不支持的版本上運行代碼。 – kosa

回答

2

加入只有在API級別該API 17 Check this!

爲了避免撞車,你可以用下面的代碼驗證

if(Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1){ 
//do your thing! 
} 

得到它的工作在較低的空氣污染水平,你可以創建你自己的BaseActivity.java並添加這樣的代碼

public class BaseActivity extends Activity { 
    private boolean mDestroyed; 

    public boolean isDestroyed(){ 
     return mDestroyed; 
    } 

    @Override 
    protected void onDestroy() { 
     mDestroyed = true; 
     super.onDestroy(); 
    } 
} 

現在,make所有的活動如下

public class MainActivity extends BaseActivity { 
... 
} 

希望這有助於延長這一BaseActivity!請接受這個答案,如果它爲你工作:)

編輯(OP添加代碼段後)

首先創建一個BaseActivity.java文件正如我上面顯示。 然後,讓所有活動延伸BaseActivity而不是Activity

現在,變化

private WeakReference<Activity> mActivityRef; 

private WeakReference<BaseActivity> mActivityRef; 

,並更改

Activity activity = mActivityRef.get(); 

BaseActivity activity = mActivityRef.get(); 
+0

我如何實現這一點,雖然,我附上了一個代碼片段 – leonardo

+0

這裏所指的「活動」對象是什麼?你可以粘貼代碼中分配'activity'對象的部分嗎? –

+0

好的我剛剛編輯了代碼片段 – leonardo