4

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

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

两种方式如下所示。

伪代码示例一;

oncreate 方法中的 onclick 方法

 MainActivity extends Activity{

 onCreate(){

 onClick listeners 

  } // end of onCreate method

 }  // end of MainActivity class

伪代码示例二;

将 onclick 放在 oncreate 方法的下方和外部

 MainActivity extends Activity{

 onCreate(){

 } // end of onCreate method

 onClick listeners

 }  // end of MainActivity class
4

5 回答 5

5

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

于 2013-01-28T07:46:45.257 回答
1

你甚至可以onClicklistener使用 xml 文件。

IE

在你的 xml 中使用这个标签:

android:onClick="startActivityB"

然后在java文件中

public void startActivityB(View v) {
        Intent intent = new Intent(ActivityA.this, ActivityB.class);
        startActivity(intent);
    }
于 2013-01-28T07:48:18.800 回答
0

如何编写活动代码由您决定。如果您愿意,您可以编写 onclick 的所有代码onCreate(),但是如果您有更多的按钮或视图要处理,并且您将为每个按钮或视图编写单独的 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;
                    }
            }
      };
于 2013-01-28T07:40:26.570 回答
0

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

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

注意:还有另一种方法 onClick在 your_layout.xml 中给出。但是现在片段开始发挥它的作用,因此它没有被广泛使用(REFER)。

于 2013-01-28T10:52:20.133 回答
-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();
    }
}
于 2013-01-28T07:38:25.583 回答