2010-06-19 6 views
1

CoreStartHere.javaen utilisant une classe dérivée de TextView

public class CoreStartHere extends TabActivity { 

    : 
t = getTabHost(); 
t.newTabSpec("tTask"); 
t.setIndicator(...); 
t.setContent(new Intent().setClass(this, T1Task.class); 
: 

} 

t1Task.java

T1Task extends Activity { 

: 
onCreate(Bundle ...) { 

    : 
    myListview = (ListView) findViewById(R.id.hdListView); 
    myEditText = (EditText) findViewById(R.id.hdEditText); 
    hdItems = newArrayList <String>(); 
    aa = new ArrayAdapter <String>(this, R.layout.hditemview, hdItems); 
    : 

    setOnKeyListener (new OnKeyListener() { 

    onKey(...) { 

    : 
    hdItems.add(0, myEditText.getText().toString()); 
    aa.notifyDatasetChanged(); 
    : 
    } 
    } 


} 
} 

hditemview.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
class="com.a1.hd.hdRecordTaskListItemView" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="10dp" 
android:scrollbars="vertical" 
android:textColor="@color/HD_Text" 
android:fadingEdge="vertical" 
/> 

hdRecordTaskListItemView.java

hdRecordTaskListItemView extends TextView { 

// has 3 constructors 

// onDraw 

} 

Aucun le constructeur de hdRecordTaskListItemView est invoqué et, de manière non surprenante, onDraw n'est pas appelé non plus. Que manque-t-il? - des suggestions ou des questions - s'il vous plaît faites le moi savoir. Le texte apparaît avec le style par défaut. L'onDraw est censé dessiner sur la "toile". Merci

Répondre

0

Vous devez créer la mise en page de cette façon:

<com.a1.hd.hdRecordTaskListItemView xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="10dp" 
android:scrollbars="vertical" 
android:textColor="@color/HD_Text" 
android:fadingEdge="vertical" 
/> 

Bien que la construction d'une mise en page via un fichier XML que vous utilisez elments comme EditText, TextView et autres, vous n'avez pas à fournir leur nom complet (par exemple android.widget.TextView) comme android va les reconnaître; mais, lorsque vous définissez vos propres vues, vous devez indiquer le nom complet de la classe que vous voulez montrer, dans ce cas com.a1.hd.hdRecordTaskListItemView.

+0

merci - cela a fonctionné! Pardon mon ignorance - pourquoi est-ce fait de cette façon? - Un lien sera extrêmement utile. Comment appelle-t-on ceci? merci encore – Abhi

+0

OK, je vais mettre à jour ma réponse pour qu'elle soit plus complète. – Cristian

+0

l'ai eu! - C'est un espace de noms. Merci encore – Abhi

Questions connexes