在何处为用户界面设置所有Listeners
?
在onCreate
中设置它们是一种好习惯吗?这看起来非常结构化和奇怪
有没有更好的地方设置它们?
答案 0 :(得分:11)
从这里开始:http://developer.android.com/reference/android/app/Activity.html
onCreate(Bundle)是初始化活动的地方。最 重要的是,在这里你通常会用一个调用setContentView(int) 布局资源定义您的UI,并使用findViewById(int)来 检索该UI中需要与之交互的小部件 编程。
初始化视图时,可以随时收听视图。 onCreate
是设置侦听器的良好回调。换句话说,您可以在onStart
或onResume
中进行设置,但是您应该了解这是不好的做法,因为onStart
和onResume
每次都会调用,当用户看到您的时候活动。 onCreate
仅在初始化Activity时调用。这是理由,为什么你应该使用onCreate
。实际上,良好的实践方法实现了像initListeners()
这样的方法,你可以把你所有的听众都放在逻辑上。
答案 1 :(得分: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
方法
答案 2 :(得分:1)
对于听众来说onCreate()是个好地方。
考虑2个活动A,B。
A - > B,如果我们从B回来,则从'A'发起'B'活动 - >然后在'A'活动中再次调用onStart(),onResume()方法,这是多余的。因此,最好只在onCreate()中添加侦听器。
并且,对于按钮侦听器,您只能在xml文件中设置属性android:onClick =“method_name”。
答案 3 :(得分:0)
这可能是你想避免混乱的原因
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
}
}
答案 4 :(得分:0)
你可以为xml中的任何视图设置onClick属性。现在你不需要在onCreate中找到并设置onClick.Now你需要在xml中提到的name的活动中定义公共方法。这看起来很好。