Как сделать повторное использование кода для андроид деятельности? - PullRequest
1 голос
/ 11 февраля 2012

повторное использование кода для деятельности сбивает с толку. В обычной ситуации мы можем спроектировать родительскую деятельность и поместить в нее все распространенные методы. как следовать:

 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 будет показывать алерты, а не выходить сразу при нажатии кнопки назад. Но в платформе Android есть несколько встроенных активностей, таких как PreferenceActivity, ListActivity, ActivityGroup и т. Д.

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

Ответы [ 2 ]

2 голосов
/ 11 февраля 2012

Создайте новый класс 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 голос
/ 11 февраля 2012

Поскольку PreferenceActivity, ListActivity, ActivityGroup являются специализированной формой Activity, и вы должны использовать их в их относительном контексте.

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

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