4 Temmuz 2010 Pazar

android'de tab değişiminde içeriğin sıfırlanması

Son zamanlarda bir Android projesi üzerine çalışıyorum. Projeyi bir tab üzerinden yürütmeye karar verdim. Bunu yaparken yine meşum bir dikkatsizlik hatası ile boğuştum. Şöyle ki; tabHost'a tab eklerken bir spec içinde tabın id'sini, indicator'unu ve content'ini veriyoruz. Ben herşeyi düzgün yapıp id'leri aynı yazmışım. Sonuç, her tab değiştirişimde yeni bir içerik oluşturulup eski içeriğin üstüne yazılıyor. 5-6 saatlik uğraşı, internette büyük bir araştırma, stackoverflow.com'daki bütün soru/cevapların taranması; hiçbiri kâr etmiyor. En sonunda başta yapmam gerekeni yapıp dikkatsizlik hatası olup olmadığını derinden kontrol ediyorum. Yaptığımı bulunca yaşadığım duygunun tarifi yok. Büyük bir rahatlamayla karışık ufak bir kendine kızma duygusu. Olsun, tecrübe yolunda bir hata bin doğrudan iyidir diyip yoluma devam ediyorum.

kod böyleyken:
spec = tabHost.newTabSpec("tag")
.setIndicator("Ürün",res.getDrawable(R.drawable.product))
.setContent(new Intent(this, UrunTab.class));
tabHost.addTab(spec);

//Do the same for other tabs
spec = tabHost.newTabSpec("tag")
.setIndicator("Araba",res.getDrawable(R.drawable.car))
.setContent(new Intent(this, ArabaTab.class));
tabHost.addTab(spec);

//Do the same for other tabs
spec = tabHost.newTabSpec("tag")
.setIndicator("Geçmiş",res.getDrawable(R.drawable.history))
.setContent(new Intent(this, GecmisTab.class));
tabHost.addTab(spec);

//Do the same for other tabs
spec = tabHost.newTabSpec("tag")
.setIndicator("Hakkında",res.getDrawable(R.drawable.about))
.setContent(new Intent(this, HakkindaTab.class));
tabHost.addTab(spec);

böyle oluyor:
spec = tabHost.newTabSpec("UrunTab")
.setIndicator("Ürün",res.getDrawable(R.drawable.product))
.setContent(new Intent(this, UrunTab.class));
tabHost.addTab(spec);

//Do the same for other tabs
spec = tabHost.newTabSpec("ArabaTab")
.setIndicator("Araba",res.getDrawable(R.drawable.car))
.setContent(new Intent(this, ArabaTab.class));
tabHost.addTab(spec);

//Do the same for other tabs
spec = tabHost.newTabSpec("GecmisTab")
.setIndicator("Geçmiş",res.getDrawable(R.drawable.history))
.setContent(new Intent(this, GecmisTab.class));
tabHost.addTab(spec);

//Do the same for other tabs
spec = tabHost.newTabSpec("HakkindaTab")
.setIndicator("Hakkında",res.getDrawable(R.drawable.about))
.setContent(new Intent(this, HakkindaTab.class));
tabHost.addTab(spec);

ve basit sorunumuz düzeliyor.

Hisse; bir sorun çıktığında önce kendimiz kaynaklı hataları kontrol etmek gerekli. Bu hatalar kod yazarken çoğunlukla dikkatsizlik hatası olarak karşımıza çıkıyor. Soruna basit bir çözüm bulamıyorsak ondan sonra karmaşık düşünmeye başlamalı ve araştırmaya koyulmalıyız. Tecrübe ile sabittir.

Hiç yorum yok:

Yorum Gönder