2010-01-05 52 views
0

下面的代码将使视图可点击,但我想知道这是否是使自定义视图可点击的正确方法?可点击查看/ onclick:使视图可点击的正确方法?

代码:

public class NodePickup extends LinearLayout 
{ 
public NodePickup(Context context, AttributeSet attributeSet) 
{ 
    super(context, attributeSet); 

    LayoutInflater inflater = (LayoutInflater)  context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     inflater.inflate(R.layout.nodepickup, this); 

     this.setOnClickListener(new OnClickListener() 
     { 
     @Override 
    public void onClick(View v) 
    { 
      AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); 
      builder.setMessage("Ajabaja!") 
      .setCancelable(true) 
      .setPositiveButton("JA!", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int id) 
        { 
        dialog.cancel(); 
        } 
       }); 
      builder.show(); 
    } 
    }); 
} 
} 
+0

您可能应该从视图中分离点击操作。您是否有任何理由要对点击监听器进行硬编码? – James 2010-01-05 21:54:03

+0

嗯,这只是测试代码,因为我是Android新手。但点击应该总是打开一个新的弹出窗口(作为弹出窗口的自定义视图)。第二个视图,弹出窗口,contaisn详细数据,因此应该根据View被点击的位置填充。 – Ted 2010-01-05 22:14:23

+0

是的,测试代码看起来很好。 如果您将要有多个此自定义视图的实例,那么您似乎希望从该活动中设置OnClickListeners。 – James 2010-01-05 22:54:51

回答

0

onClick()中的代码只是简单地创建对话框 - 没有任何东西会导致它显示在屏幕上。要做到这一点,请在您的点击处理程序中调用showDialog(int),并在您的活动中实施onCreateDialog(int)

查看Android文档的Creating Dialogs部分以获取更多信息。

+0

是的,我知道上面的代码没有显示任何内容(它现在已被编辑)。但是那不是我的问题:-)我想知道setOnClickListener是否在正确的位置,也就是说,它被称为IN代码中的View本身。那是对的吗? 我知道它的工作原理,但它是这样的吗? – Ted 2010-01-05 21:16:56

+0

如果您希望视图的每个实例具有相同的onclick行为,那么它完全可以接受。 – 2010-01-05 21:49:32

+0

毫米...实际上,点击视图应该总是打开另一个“弹出”(对象类型的详细视图),但弹出窗口中的信息当然取决于第一次点击的视图。 上面的代码只是测试代码(即时通讯新的Android,但已经在C#编程几年了) – Ted 2010-01-05 22:12:47

0

调用setOnClickListener()是一种制作图可点击的适当方式。

+0

嘿,我想知道setOnClickListener是否在正确的位置,也就是说,它被称为视图本身的代码。那是对的吗? 我知道它有效,但在视图的代码中调用该方法可以吗? – Ted 2010-01-05 21:17:27