2012-02-11 6 views
1

활동에 대한 코드 재사용이 혼란 스럽습니다. 정상적인 상황에서 우리는 부모 활동을 설계하고 그것에 공통적 인 모든 방법을 넣을 수 있습니다. 다음과 같이하십시오 :안드로이드 활동을위한 코드 재사용을 수행하는 방법은 무엇입니까?

public class BaseActivity extends Activity{ 
@Override 
    protected void doExit() { 
    showDialog(DIALOG_EXIT_ALTER); 
} 
protected Dialog onCreateDialog(int id, Bundle args) { 
    switch (id) { 
    case DIALOG_EXIT_ALTER: 
    return new AlertDialog.Builder(BaseUIActivity.this) 
     .setTitle("Exit?") 
     .setPositiveButton("Yes", 
       new DialogInterface.OnClickListener() { 
        public void onClick(
          DialogInterface dialoginterface, int i) { 
        close(); 
        } 
       }) 
     .setNeutralButton("No",null).create(); 
    default: 
    return null; 
    } 
} 
protected void close() { 
    finish(); 
} 
} 

다른 활동 확장 BaseActivity는 뒤로 버튼을 누르면 즉시 종료하는 대신 alertdialog를 표시합니다. 그러나 안드로이드 프레임 워크에는 PreferenceActivity, ListActivity, ActivityGroup 등과 같은 하나 이상의 빌드 인 활동이 있습니다.

내 활동이 이러한 활동을 확장하는 경우 Java의 단일 상속으로 인해 BaseActivity에 정의 된 공통 코드를 사용할 수 없습니다. 안드로이드에서 코드 재사용을 권장하는 다른 방법이 있습니까?

답변

2

ActivityHelper 클래스를 새로 만듭니다.

 
public class ActivityHelper { 

    Activity activity; 

    public ActivityHelper(Activity activity) { 
     this.activity = activity; 
    } 

    public Dialog onCreateDialog(int id, Bundle args) { 
     // do many usefull things 
     return result; 
    } 
} 

귀하의 모든 활동에 사용하십시오.

 

    protected Dialog onCreateDialog(int id, Bundle args) { 
     return activityHelper(id, args); 
    } 

+1

ActivityHelper는 좋은 예입니다. http://iosched.googlecode.com/hg/android/src/com/google/android/apps/iosched/util/ActivityHelper.java 전체를 검사하십시오. 프로젝트 흐름을 보려면 http://code.google.com/p/iosched/ –

+0

+1 링크를 클릭하고 ActivityHelper는 좋은 해결책입니다. – DouO

1

PreferenceActivity, ListActivity, ActivityGroupActivity의 특수 형식이므로 상대적인 맥락에서 사용해야합니다.

그래서 이럴 해결 방법은 프로젝트에서 그들에게 두 개 이상의 시간을 사용하는 경우 [모든 Activity 위] Base +의 사본을 가지고 있고, 자녀 ListActivity 또는 어떤 전문 Activity 그것이 확장하는 것입니다.

+0

예이 방법이 해결책이지만 일반적인 방법입니다. – DouO

관련 문제