2012-02-11 2 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 и т. Д.

Если моя деятельность расширяет эти действия, тогда он не может использовать общий код, определенный в BaseActivity.because одиночного наследования Java. Так есть ли другой способ рекомендовать повторное использование кода для активности в android?

ответ

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, ActivityGroup - это специальная форма Activity, и вы должны использовать их в своем относительном контексте.

Так ИМХО обходной путь, чтобы иметь одну копию Base + [все выше Activity], если вы должны использовать их более одного раза в проекте, а также продлить ваш ребенок ListActivity или что-то специализированная Activity это.

+0

Да, это решение, но оно обычное. – DouO

Смежные вопросы