У меня есть Layout
, определенный в XML, который состоит из нескольких Button
s.
В настоящее время я делаю это в методе 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
}
Я новичок в андроиде, и этот подход переопределения события каждый раз кажется мне грязным. Я хотел бы знать, что лучше всего подходит для определения обработчиков событий кнопок в таких сценариях.
Изменить: вставка моего полного класса
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
.. Правильный подход? Или я делаю что-то неправильно? Потому что, если я не перерегистрирую событие, ничего не происходит, когда я нажимаю кнопку.