0
com.android.internal.app
부분 인 ActionBarImpl을 확장해야합니다. 그러나 새로운 안드로이드 릴리스에서 언제든지 바뀔 것이기 때문에 그렇게하는 것을 권장하지 않습니다. 즉com.android.internal.app를 속여 ActionBarImpl을 확장하십시오.
public class MyActionBar extends ActionBar {
private ActionBar ab;
public MyActionBar(Activity activity) {
ab = activity.getActionBar();
}
@Override
public void setCustomView(View view) {
ab.setCustomView(view);
}
... (so on with all ActionBar abstract methods)
: 나는 내가 이런 식으로 클래스를 생성하여 "속임수"할 생각 ActionBarImpl
을 다시 구현하려고하지 않기 때문에
나는 실제 어디서 ActionBar
+ 개인 회원이 확장 activity's ActionBar
그리고 모든 메소드 호출을 위임하십시오.
이렇게하면 단점이 있습니까? 호환성을 깨뜨리지 않을거야?
그러나 ActionBarImpl 호출 전후에 코드를 추가하여 ActionBar 메서드를 조정할 수 있습니다. 내 앱에서'ActionBar actionBar = getActionBar()'코드를'ActionBar actionBar = new MyActionBar (this)'로 바꾸고 평소와 같이 계속 사용합니다. – ilomambo
원본 ActionBar 메서드를 장식하는 경우 원래 논리를 직접 래핑하는 것이 좋습니다. 하지만 시스템과 활동 자체는 여전히 원래 인스턴스를 사용할 것이라고 고려할 수 있습니다. ActionBar가 화면에 자신을 그리는 redraw() 메소드를 가지고있는 것처럼 가정 해 봅시다.이 메서드를 래핑할지 여부는 시스템이 원래의 방법을 사용할지 여부에 따라 달라 지므로 변경 내용이 ActionBar의 그리는 방법에 영향을 미치지 않습니다. – Antonio