У меня есть Layout
, определенный в XML, который состоит из нескольких Button
с.
В настоящее время я делаю это в методе OnCreate
, чтобы определить обработчики событий для кнопок:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button newPicButton = (Button)findViewById(R.id.new_button);
newPicButton.setOnClickListener(btnListener);
..... similarly for other buttons too
.....
}
Внутри события Button
onClick
я запускаюкамера Intent
для получения изображения и внутри обратного вызова onActivityResult
Я снова устанавливаю обработчики событий вместе с настройкой View
следующим образом:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
setContentView(R.layout.main);
Button newPicButton = (Button)findViewById(R.id.new_button);
newPicButton.setOnClickListener(btnListener);
...similarly for other buttons too
}
Я новичок в Android и этот подходпереопределение события каждый раз кажется мне довольно грязным.Я хотел бы знать, какова наилучшая практика с точки зрения определения обработчиков событий кнопок в подобных сценариях.
Редактирование: вставка моего полного класса
public class CameraAppActivity extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button newPicButton = (Button)findViewById(R.id.new_button);
newPicButton.setOnClickListener(btnListener);
}
//---create an anonymous class to act as a button click listener---
private OnClickListener btnListener = new OnClickListener()
{
public void onClick(View v)
{
//Intent newPicIntent = new Intent(v.getContext(), NewPictureActivity.class);
//startActivityForResult(newPicIntent, 0);
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, 999);
}
};
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
setContentView(R.layout.main);
Button newPicButton = (Button)findViewById(R.id.new_button);
newPicButton.setOnClickListener(btnListener);
//if I comment last two lines nothing happens when I click on button
}
Основной вопрос заключается в
setContentView(R.layout.main);
Button newPicButton = (Button)findViewById(R.id.new_button);
newPicButton.setOnClickListener(btnListener);
Перерегистрация событий внутри onActivityResult
.. это правильный подход?Или я что-то не так делаю?Потому что, если я не перерегистрирую событие, при нажатии кнопки ничего не происходит.