Java错误api级别方法
Java error api level method
我收到一个错误
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();
}
此 API 仅在 API 级别 17 Check this!
中添加
为避免崩溃,您可以使用以下代码进行验证
if(Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1){
//do your thing!
}
要让它在较低的 API 级别上运行,您可以创建自己的 BaseActivity.java 并添加这样的代码
public class BaseActivity extends Activity {
private boolean mDestroyed;
public boolean isDestroyed(){
return mDestroyed;
}
@Override
protected void onDestroy() {
mDestroyed = true;
super.onDestroy();
}
}
现在,让您的所有活动都扩展此 BaseActivity,如下所示
public class MainActivity extends BaseActivity {
...
}
希望这对您有所帮助!如果对您有用,请接受此答案:)
编辑(OP 添加代码片段后)
首先创建一个 BaseActivity.java
文件,如上所示。
然后,让你所有的活动扩展 BaseActivity
而不是 Activity
.
现在,改变
private WeakReference<Activity> mActivityRef;
至
private WeakReference<BaseActivity> mActivityRef;
并改变
Activity activity = mActivityRef.get();
至
BaseActivity activity = mActivityRef.get();
我收到一个错误
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();
}
此 API 仅在 API 级别 17 Check this!
中添加为避免崩溃,您可以使用以下代码进行验证
if(Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1){
//do your thing!
}
要让它在较低的 API 级别上运行,您可以创建自己的 BaseActivity.java 并添加这样的代码
public class BaseActivity extends Activity {
private boolean mDestroyed;
public boolean isDestroyed(){
return mDestroyed;
}
@Override
protected void onDestroy() {
mDestroyed = true;
super.onDestroy();
}
}
现在,让您的所有活动都扩展此 BaseActivity,如下所示
public class MainActivity extends BaseActivity {
...
}
希望这对您有所帮助!如果对您有用,请接受此答案:)
编辑(OP 添加代码片段后)
首先创建一个 BaseActivity.java
文件,如上所示。
然后,让你所有的活动扩展 BaseActivity
而不是 Activity
.
现在,改变
private WeakReference<Activity> mActivityRef;
至
private WeakReference<BaseActivity> mActivityRef;
并改变
Activity activity = mActivityRef.get();
至
BaseActivity activity = mActivityRef.get();