【发布时间】:2011-09-16 08:35:38
【问题描述】:
我在 XML 中定义了一个 Layout,它由几个 Buttons 组成。
目前我在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.. 中重新注册事件是正确的方法吗?还是我做错了什么?因为如果我不重新注册事件,当我点击按钮时不会发生任何事情。
【问题讨论】:
-
如果它们已经在
onCreate()中设置,您不必在onActivityResult()中再次设置它们 -
:S 如果我在意图返回主视图时不执行此操作,则单击按钮不会发生任何事情
标签: android button event-handling