我希望我的应用能够在 Android 2.0 之前的操作系统(即 1.5 和 1.6)上运行。 我需要包含 2.0 及更高版本的 Activity.onAttachedToWindow()。 如何使用反射(或任何其他方法)使我的应用在 2.0 之前的 Android 操作系统上正常工作?
Activity
的onAttachedToWindow
为空。这意味着您可以避免调用super.onAttachedToWindow
。所以最简单的方法是:
@Override
public void onAttachedToWindow()
{
Log.e("TEST", "onAttachedToWindow");
}
Android 操作系统将在 API 级别 5+ (2.0+) 上调用您的onAttachedToWindow
。而在 1.5/1.6 上,这个函数永远不会被调用。
如果要通过反射从超类调用onAttachedToWindow
的实现:
@Override
public void onAttachedToWindow()
{
Log.e("TEST", "onAttachedToWindow");
/* calling:
* super.onAttachedToWindow();
*/
Class<?> activityClass = (Class<?>)getClass().getSuperclass();
try
{
Method superOnAttachedToWindow = activityClass.getMethod("onAttachedToWindow");
superOnAttachedToWindow.invoke(this);
}
catch(InvocationTargetException ex)
{
//TODO: add exception handling
}
catch(IllegalAccessException ex)
{
//TODO: add exception handling;
}
catch(IllegalArgumentException ex)
{
//TODO: add exception handling
}
catch(NoSuchMethodException ex)
{
/* you are here if `onAttachedToWindow` does not exist */
}
}