как использовать отражение на Activity.onAttachedToWindow () - PullRequest
0 голосов
/ 17 мая 2011

Я хочу, чтобы мое приложение можно было запускать в операционных системах до Android 2.0 (а именно 1.5 и 1.6).Мне нужно включить Activity.onAttachedToWindow () для 2.0 и выше.Как я могу использовать отражение (или любой другой подход), чтобы свойство моего приложения работало в операционных системах Android до версии 2.0?

1 Ответ

1 голос
/ 18 мая 2011

Activity onAttachedToWindow пусто. Это означает, что вы можете не звонить super.onAttachedToWindow. Так что самый простой способ будет:

@Override
public void onAttachedToWindow()
{   
     Log.e("TEST", "onAttachedToWindow");               
}

ОС Android будет называть ваш onAttachedToWindow на уровне API 5+ (2.0+). А в 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 */           
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...