在Android Activity中放置onclick监听器的正确位置在哪里?

时间:2013-01-28 07:33:50

标签: android onclick position oncreate

在Android活动中放置onclick监听器的最佳位置在哪里?我见过两种不同的方式。一种方法是将它们放在onCreate方法中,另一种方法是将它们放在onCreate方法的下方和外部。

我刚刚启动了一个新的Android应用程序,我很困惑哪里是最好的地方。

两种方式如下所示。

psudo代码示例一;

oncreate方法中的

onclick方法

 MainActivity extends Activity{

 onCreate(){

 onClick listeners 

  } // end of onCreate method

 }  // end of MainActivity class

psudo代码示例二;

在oncreate方法下面和外面点击

 MainActivity extends Activity{

 onCreate(){

 } // end of onCreate method

 onClick listeners

 }  // end of MainActivity class

5 个答案:

答案 0 :(得分:4)

两种方式都是正确的。你如何组织代码实际上是为了可读性。如果onCreate()中有太多的监听器,那么之后就很难读取代码。但是,如果您只有一个并且它是一个衬垫,那么最好将它放在onCreate()中。

答案 1 :(得分:1)

你甚至可以使用xml文件放置onClicklistener

你的xml中的

使用这个标签:

android:onClick="startActivityB"

然后在java文件中

public void startActivityB(View v) {
        Intent intent = new Intent(ActivityA.this, ActivityB.class);
        startActivity(intent);
    }

答案 2 :(得分:0)

由您决定如何编写活动代码。 如果你想要,你可以在onCreate()中编写onclick的所有代码,但如果你有更多按钮或视图要处理,你会为每个按钮或视图单独写onClick,那么你的onCreate()看起来会如此笨拙。

在这种情况下,您可以为所有按钮创建公共onClickListener,并单独编写逻辑,使您的代码看起来很漂亮,您也可以选择onCreate()

这对我来说是最好的方式:

   btn1.setOnClickListener(m_onClickListener);
/**
 * Common click listener
 */
OnClickListener m_onClickListener=new OnClickListener()
{
    @Override
    public void onClick(View p_v)
    {
        switch(p_v.getId())
        {
            case R.id.btn1:
                break;
                    }
            }
      };

答案 3 :(得分:0)

您可以同时使用这两种方式。我认为工作势头相同

如果使用第二种方法代码的可读性会很好

注意:还有另一种方法在my_layout.xml中提供onClick。但是现在有一天片段来扮演它的角色所以它没被广泛使用(REFER)。

答案 4 :(得分:-3)

你应该总是喜欢第二个。如果你把它放在创建中,它也会起作用。但是你不希望每次加载活动时都这样做。

这是一个例子

package com.damon86.toastExample;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;

public class ToastExample extends Activity implements OnClickListener {
    /** Called when the activity is first created. */

    // The text and button used on the display.
    EditText toastText = null;
    Button showToast = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Create a new Layout.
        LinearLayout rootLayout = new LinearLayout(getApplicationContext());

        // Create textfield
        toastText = new EditText(getApplicationContext());
        toastText.setText("Hello Toast!");

        // Create button and set OnClickListener
        showToast = new Button(getApplicationContext());
        showToast.setText("Show Toast");
        showToast.setOnClickListener(this);

        // Add components to the Layout.
        rootLayout.addView(toastText);
        rootLayout.addView(showToast);

        // Add the layout as the content view for the application.
        setContentView(rootLayout);
    }

    /**
     * Implemented method - onClick.
     * Show the user a piece of toast.
     */
    @Override
    public void onClick(View v) {

        // Create a piece of toast.
        Toast pieceToast = Toast.makeText(getApplicationContext(), toastText.getText(), Toast.LENGTH_SHORT);

        // Show the toast.
        pieceToast.show();
    }
}