티스토리 뷰
아래같은 복잡한 java코드를 reflection으로 어떻게 하는걸까? getInstance()가 있어서 복잡하군..
PopupWindowManager.getInstance().showBasicPopup(this, "Message", new View.OnClickListener(), new View.OnClickListener());이간단한 코드를 reflection으로 하는데는 아래처럼 복잡한 코드가 된다. ㅠㅜ
try { Class clz = Class .forName("com.skplanet.ocb.util.PopupWindowManager"); if (clz == null) { return handle; } Method im = clz.getDeclaredMethod("getInstance"); if (im == null) { return handle; } Object sinstance = im.invoke(null); if (sinstance == null) { return handle; } Method m = clz.getDeclaredMethod("showBasicPopup", Context.class, String.class, String.class, String.class, View.OnClickListener.class, View.OnClickListener.class); if (m == null) { return handle; } m.invoke(sinstance, context, message, okTitle, cancelTitle, oklistener, cancellistener); } catch (Exception e) { e.printStackTrace(); }
minSdkVersion=10환경에서 APILevel=11인 startActivities를 호출하고 싶다.. 빌어먹을 빌드도 안된다.
Intent[] is = new Intent[intents.size()]; startActivities(intents.toArray(is));
이럴때도 아래처럼 Reflection을 써야 한다.
Intent[] is = new Intent[intents.size()]; Class clz = getClass(); Method method = clz.getMethod("startActivities", new Class[] {Intent[].class}); method.invoke(this, new Object[] {intents.toArray(is)});
'Android > Java TIP' 카테고리의 다른 글
apk decompile (0) | 2013.10.15 |
---|---|
Volatile and Synchronized (0) | 2013.08.14 |
R.java can't find (0) | 2013.07.25 |
JD-Eclipse (0) | 2013.02.05 |
Java, Javac (0) | 2013.02.04 |
댓글