Setbackgroundcolor(İnt) Hatası
-
Ufak tefek bi uygulamayla uğraşıyorum ayarlar kısmında seçilen renk uygulamanın arkaplanı olacak fakat
private void ayarlariyukle() {
String pos=ayarlar.getString("arkaplan","3");
switch (Integer.valueOf(pos)){
case 0:
arkaplann.setBackgroundColor(Color.RED);
break;
case 1:
arkaplann.setBackgroundColor(Color.GREEN);
break;
case 2:
arkaplann.setBackgroundColor(Color.BLUE);
break;
case 3:
arkaplann.setBackgroundColor(Color.DKGRAY);
break;
case 4:
arkaplann.setBackgroundColor(Color.LTGRAY);
break;
}
ses_durumu=ayarlar.getBoolean("ses",false);
titresim_durumu=ayarlar.getBoolean("titresim",false);
}burda kısımda bir hata var uygulama burayı yazınca açılmıyor
"java.lang.RuntimeException: Unable to start activity ComponentInfo{emironder.sayac/emironder.sayac.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RelativeLayout.setBackgroundColor(int)' on a null object reference"
bu hatayı alıyorum. sebebi nedir? bu kısmı sildiğim zaman uygulama çalışıyor.
-
arkaplann isimli nesnen büyük ihtimalle null görünüyor.. layout unu düzgün şekilde arkaplann da ki nesneye eşitlersen çalışır
-
globalde
RelativeLayout arkaplann;
metod içinde
arkaplann= (RelativeLayout) findViewById(R.id.rl);
burda bir sıkıntı yok anlayamadım
-
if(arkaplann == null)
Log.i("arkaplan","boş");
else
Log.i("arkaplan","dolu");
bu şekilde yap bakalım dolu mu boş mu yazacak loglarda
-
Anlamadım nereyi yapayım?
-
HalfGlaze bunu yazdı
Anlamadım nereyi yapayım?
ayarlardan arkaplani almadan once unbalanced in kodunu kullan check et case islemine sokmadan onceki null mu gelior gelmiyor mu belli olsun.
-
Teşekkür ederim halloldu onCreate'i
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn= (Button) findViewById(R.id.button);
preferences= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
ayarlar= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
arkaplann= (RelativeLayout) findViewById(R.id.rl);
ayarlariyukle();
if(arkaplann == null)
Log.i("arkaplan","boş");
else
Log.i("arkaplan","dolu");
count=preferences.getInt("count_anahtari", 0);
btn.setText("" + count);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count++;
btn.setText("" + count);
}
});
}Bu şekilde düzelttim.
Yaptığımız işlem tam olarak ne? -
bi şeyi çözecek kod değil hocam o.. hatta ayarlariyükle nin altına yazmışsın..
o if-else i üstüne yazacaktın ayarlariyükle nin.. ve loglara bakıp orada dolu mu boş mu yazdığını görecektin..
-
-
üste yazınca hata vermemesi normal, orada arkaplann ın null gelip gelmediğini öğrenmek için yazmanı istedim. log da boş ya da dolu yazar. hata olup olmaması ona bağlı..
böyle hata vermiyorsa başka bi şeyden kaynaklanıyor olabilir. veriler tam yüklenmeden belki o if-else nin altındakini çağırıyorsun ve null exception hatası fırlatıyor. bu if-else biraz yavaşlattığı için sorun olmuyor olabilir..
debug yapmadan görmek zor.ama yazılan kodun pek alakası yok hocam hata çözümü ile ilgili
-
İlerde tekrar aynı sorun olursa iyice kurcaliycam bakalim.
Tekrar teşekkürler.