Sadece findViewById() kullanarak özel bir Görünüm yakalamaya çalışırken bir sorunla karşılaşıyorum. Özel görünüm, aksi halde doğru şekilde görüntüler ve çalışır. Ne yazık ki, gösterdiği bazı verileri değiştirebilmem gerekiyor, bu yüzden yapılması gerekiyor.Android ClassCastException Özel Görünüm'ü aldıktan sonra
Benim XML şöyle görünür:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.TheProject.TheApp.Chart
android:id="@+id/chart"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
Sorunun insanların yanlışlıkla bunun yerine kendi alt sınıfının XML bileşeni "Görünüm" adını olmasıdır bazen biliyorum. Benim etkinlik'ın onCreate() yönteminin içinde
, bu var:
bir ClassCastException atarmyChart=(Chart)findViewById(R.id.chart); //where myChart is an object of type Chart
.
Biraz deneme karar verdi ve hala ClassCastException alınan eğer yerine görmek için bu kadar çizgiyi değiştirdi:View chart=(View)findViewById(R.id.chart);
Bu
iyi çalıştı, findViewById bana Görünüm vererek hiçbir sorun olmayacağını söylüyor. Ama bana bir grafik vermek istemiyor.Grafik sınıfı gittiği sürece, doğru şekilde göründüğü gibi görünen Görünümün gerçekten basit bir alt sınıfıdır.
public class Chart extends View{
public Chart(Context context) {
super(context);
init();
}
public Chart(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public Chart(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
/* More stuff below like onDraw, onMeasure, setData, etc. */
}
Muhtemelen aptalca bir şey yapıyorum. Herhangi bir fikrin var mı? Yardım ettiğin için teşekkür ederim!
Grafikte kurucular var mı? – Phil
Evet. Grafikte 3 kurucu var. Yayınlarımı göstermek için düzenledim. – Schmidget