2011-06-12 13 views
8

मैं छविबटन कक्षा की कार्यक्षमता को विस्तारित करना चाहता हूं, एक नई कक्षा में जिसे मैं "डायलबटन" कहता हूं। शुरू करने के लिए, मैं Simpy ImageButton का विस्तार, और कुछ नया जोड़ा नहीं। मेरे दिमाग में, यह सामान्य छविबटन वर्ग के समान होना चाहिए।छविबटन को सही तरीके से कैसे बढ़ाया जाए?

package com.com.com; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.ImageButton; 

public class DialButton extends ImageButton{ 

    public DialButton(Context context) { 
     super(context); 
     // TODO Auto-generated constructor stub 
    } 

    public DialButton(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     // TODO Auto-generated constructor stub 
    } 

    public DialButton(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     // TODO Auto-generated constructor stub 
    } 

} 

मैं एक्सएमएल (फ़ाइल के बाकी के बारे में चिंता न, इसके अप्रासंगिक)

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="1"> 
    <TableRow 
    android:layout_weight="1"> 
     <DialButton 
      android:id="@+id/button1" 
      android:background="@drawable/dialpad" 
      android:layout_weight="1"/> 

में एक DialButton डालने और मेरी गतिविधियों में XML का उपयोग:

package com.com.com; 

import android.app.Activity; 
import android.os.Bundle; 

public class Android3 extends Activity { 

    DialButton button1; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.maintable); 
    } 
} 

सब कुछ compiles और एमुलेटर में स्थापित करता है लेकिन जब ऐप शुरू होता है तो यह बल मुझ पर बंद हो जाता है। यदि मैं XML घटक को डायलबटन से एक छवि बटन में बदलता हूं, तो सब कुछ ठीक काम करता है। ऐसा क्यों है? इमेजबटन क्लास और मेरी डायलबटन क्लास के बीच क्या अंतर है जो डायलबटन घटक को ऐप को क्रैश करने का कारण बनता है?

उत्तर

11

अपने लेआउट फ़ाइल में, आप इस प्रकार अपने कस्टम विगेट्स के लिए एक 'पूरी तरह से योग्य' नाम प्रदान करने के लिए है ...

<com.mycompany.myapp.DialButton 
    android:id="@+id/button1" 
    android:background="@drawable/dialpad" 
    android:layout_weight="1"/> 
+1

इस लिंक http://developer.android.com/guide/ देखें विषयों/ui/custom-instruments.html # विवरण के लिए संशोधित – Noel

+0

चीयर्स साथी! इसने काम कर दिया! मैंने ट्यूटोरियल के उस हिस्से को नजरअंदाज कर दिया। यहां पाया गया: http://developer.android.com/guide/topics/ui/custom-components.html – fred

+0

@fred: सहायता करने में खुशी। – Squonk

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