2011-04-23 13 views
5

मैंने निम्नलिखित कोड लिखा लेकिन मुझे सभी बटनों के लिए OnclickListner() विधि लिखने का तरीका नहीं मिल रहा है।रनटाइम पर एकाधिक बटन कैसे बनाएं? + एंड्रॉइड

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    LinearLayout layout = (LinearLayout) findViewById(R.id.ll1Relative); 
    for (int i = 1; i < 10; i++) { 
     LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.WRAP_CONTENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT 
     ); 
     Button b = new Button(this); 
     b.setText(""+ i); 
     b.setId(100+i); 
     b.setWidth(30); 
     b.setHeight(20); 
     layout.addView(b, p); 
    } 
} 

उत्तर

2

आप इस तरह एक गुमनाम भीतरी विधि का उपयोग कर सकते हैं:

Button b = new Button(this); 
b.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     // Perform action on click 
    } 
}); 
b.setText("" + i); 
b.setTag("button" + i); 
b.setWidth(30); 
b.setHeight(20); 
+0

बात मैं SQLite लिखना चाहते है प्रत्येक बटन को अलग से पूछताछ करें। क्या यह स्विथ केस का उपयोग करना बेहतर है? 10 बटन हैं और प्रत्येक में अलग क्वेरी है। – Pramod

0

आप अलग अलग काम करने के लिए बटन चाहते हैं, आप अपनी गतिविधि का विस्तार हो सकता था OnClickListener, पाश में b.setOnClickListener(this) निर्धारित करते हैं, और जोड़ने कुछ

@Override 
public onClick(View v) 
{ 
    // get who called by 
    String sTag = (String) v.getTag(); 

    if (sTag.equals("button1")) 
    { 
    //do some stuff 
    } 
    else if (sTag.equals("button2")) 
    { 
    //do some other stuff 
    } 
    // and so on 
} 

क्लिक को संभालने के लिए कुछ।


और मैं यहाँ में इस संपादन कर रहा हूँ क्योंकि पंक्ति विराम की कमी अस्पष्ट टिप्पणी करता है:

int iBtnID = v.getId(); 
switch (iBtnID) 
{ 
    case 101: 
    // do stuff; 
    break; 
    case 102: 
    // do other stuff 
    break; 
    // and so on 
} 
+0

टैग का इंस्टॉलेशन मैं setId() का उपयोग कर रहा हूं, क्या आप कृपया स्विच केस स्टेटमेंट के साथ समझाएंगे। – Pramod

+0

@Pramod: मेरे पिछले उत्तर में संपादित स्विच/केस संपादित करें। :) –

-1
LinearLayout lin = (LinearLayout) findViewById(R.id.linearLayout); 

Button b1 = new Button(this); 


b1.setText("Btn"); 
b1.setId(int i=2); 
b1.setonClicklistenor(this); 
lin .addView(b1); 

और

onclick (View v){ 


int i=v.getId(); 

if (i==2){ 

///operation 
} 
} 
} 
+1

मुझे नहीं पता कि यह सवाल का जवाब कैसे देता है। ओपी की समस्या बटन के लिए क्लिक ईवेंट को संभालने का तरीका था। – Michael

संबंधित मुद्दे