Я учусь Android от нескольких учебных пособий, а когда речь заходит об использовании OnClickListeners, я заметил, что многие из них используют анонимные внутренние классы, как так:Анонимные внутренние классы и хорошая практика
public class MainActivity extends AppCompatActivity {
private EditText mNameField;
private Button mStartButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mNameField = (EditText) findViewById(R.id.nameEditText);
mStartButton = (Button) findViewById(R.id.startButton);
mStartButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = mNameField.getText().toString();
Toast.makeText(MainActivity.this, name, Toast.LENGTH_LONG).show();
}
});
}
}
Это считается хорошая практика иметь класс внутри класса? Или считается, что лучше каким-то образом определить этот класс вне где-нибудь, а затем ссылаться на него? Как мне это сделать?
Возможный дубликат [Как Анонимные (внутренние) классы используются в Java? ] (http://stackoverflow.com/questions/355167/how-are-anonymous-inner-classes-used-in-java) –
@AndrewRegan Я знаю, как они используются, но я спрашиваю, считаются ли они od практика. – DoubleBass
Документация на Android не слишком наводит на размышления о том, какой подход является «лучшим», но если у вас есть несколько кнопок в макете, вы не будете создавать анонимные классы для каждой кнопки. Это становится громоздким. Вместо этого рассмотрите возможность внедрения OnClickListener как части вашего Activity/Fragment. – Susheel