Где установить всех слушателей?

Где установить все Listeners для пользовательских интерфейсов?
Правильно ли установить их в onCreate? Это выглядит так неструктурированным и странным. Есть ли лучшее место для их установки?

Ответ 1

Отсюда: http://developer.android.com/reference/android/app/Activity.html

onCreate (Bundle) - это то, где вы инициализируете свою деятельность. Наиболее важно, здесь вы обычно вызываете setContentView (int) с помощью ресурс макета, определяющий ваш пользовательский интерфейс, и используя findViewById (int) для получить виджеты в этом пользовательском интерфейсе, с которыми вам нужно взаимодействовать программным способом.

Когда вы инициализируете свои взгляды, они готовы к прослушиванию. onCreate - хороший обратный вызов для установки слушателей. Другим способом вы можете установить его в onStart или onResume, но вы должны понимать, что его плохая практика, потому что onStart и onResume вызывает каждый раз, когда пользователь видит вашу активность. onCreate вызывает только при инициализации Activity. Это причина, почему вы должны использовать onCreate. На самом деле, хорошая практика реализует метод типа initListeners(), где вы можете поместить все логики слушателей.

Удачи!

Ответ 2

Используйте onCreate метод, чтобы установить UI и получить Widget из UI.

protected void onCreate(Bundle savedValues) {
    // Here set the UI and get the widgets
    //set the Listeners on the widgets you are getting at the above line
}

И вы можете определить clickListener для виджетов и использовать его в методе onCreate

OnClickListener someListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Toast.makeText(v.getContext(), "widget pressed ", Toast.LENGTH_SHORT).show();

    }
};

и вы можете установить выше clickListener виджет, который вы создали в onCreate методе

Ответ 3

Для слушателей onCreate() - хорошее место.

Рассмотрим 2 действия A, B.

A → B, запуская операцию "B" из "A", если мы вернемся из B → A, то onStart() методы onResume() снова будут вызваны в "A", и это будет лишним. Поэтому лучше всего добавлять слушателей только в onCreate().

А для прослушивателей кнопок вы можете установить атрибут android: onClick = "method_name" только в файле xml.

Ответ 4

Это может быть то, что вы хотите избежать беспорядка

public class SomeActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState){
        Button button1 = (Button)findViewById(R.id.button1);
        button1.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View view){
                SomeActivity.this.button1_onClick(view);
            }
        });
    }

    private void button1_onClick(View view){
        ///do stubs here
    }
}

Ответ 5

Вы можете установить свойство onClick для любого вида в xml. Так что теперь вам не нужно искать и устанавливать onClick в onCreate. Теперь вам нужно определить публичный метод в активности имени u, упомянутого в xml. Это выглядит построенным.