2016-02-27 2 views
1

У меня есть этот метод:Как правильно отправлять контекст, активность и соединение интерфейса в методе?

public LeftDrawerView(Activity activity, Context context, LeftDrawerViewInterface delegate) 
{ 
    this.activity = activity; 
    this.context = context; 
    this.delegate = delegate; 
} 

Для вызова выше метода, звоню с ниже способом:

LeftDrawerView leftDrawerView new LeftDrawerView(this, this, this); 

Что может запутать позже, я бледный, чтобы упростить это, есть ли способ сделать это ?

я мог бы назвать отдельные переменные, как это:

LeftDrawerView leftDrawerView new LeftDrawerView(); 
leftDrawerView.context = this; 
leftDrawerView.activity = this; 
leftDrawerView.delegate = this; 

Это более удобным для чтения, но больше кода, чтобы сделать. хочу этого избежать. любое предложение было бы оценено.

ответ

1

Вы можете создать еще один конструктор, который будет вызывать уже существующий:

public LeftDrawerView(Activity from) { 
    this(from, from, from); 
} 
0

Не было бы проще просто передать свой CustomActivity так:

public LeftDrawerView(CustomActivity customActivity){ 
    this.customActivity = customActivity; 
} 

И чем, если вы нужно, чтобы просто бросить этот путь:

((Activity) LeftDrawerView.this.customActivity); 
((Context) LeftDrawerView.this.customActivity); 
((LeftDrawerViewInterface) LeftDrawerView.this.customActivity); 
0

Что по поводу этого:

public LeftDrawerView() {}; 

Тогда вы бы создать соответствующие сеттеры:

public void setActivity(Activity activity) {...}; 

И, наконец, соответствующие геттеры:

public Activity getActivity() {...}; 

public Context getContext() {...}; 

public LeftDrawerViewInterface getLeftDrawerViewInterface() {...}; 

Вы должны использовать один атрибут для хранения экземпляра Activity, а затем, по каждому геттер, вы бы сделали правильный бросок.

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