2010-01-05 85 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