在哪里设置所有听众?

时间:2014-01-18 12:36:50

标签: android listener oncreate

在何处为用户界面设置所有Listeners? 在onCreate中设置它们是一种好习惯吗?这看起来非常结构化和奇怪 有没有更好的地方设置它们?

5 个答案:

答案 0 :(得分:11)

从这里开始:http://developer.android.com/reference/android/app/Activity.html

  

onCreate(Bundle)是初始化活动的地方。最   重要的是,在这里你通常会用一个调用setContentView(int)   布局资源定义您的UI,并使用findViewById(int)来   检索该UI中需要与之交互的小部件   编程。

初始化视图时,可以随时收听视图。 onCreate是设置侦听器的良好回调。换句话说,您可以在onStartonResume中进行设置,但是您应该了解这是不好的做法,因为onStartonResume每次都会调用,当用户看到您的时候活动。 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的活动中定义公共方法。这看起来很好。