Arama butonu
Bu konudaki kullanıcılar: 1 misafir
4
Cevap
145
Tıklama
0
Öne Çıkarma
SharedPrefenceres Uygulama Çökmesi
G
8 yıl
Yarbay
Konu Sahibi

Android Studio üzerinde SharedPreferences ile arkaplan değiştirildiği zaman hafızaya kayıt etmesini istiyorum ayarlar java sınıfı oluşturup preference activity extend ettim.
Mainactivity de SharedPrefenceres ayarhafizasi olarak tanıttım

ayarhafizasi= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

activity_main e bunu girdim ve aşağıdaki metodu oluşturdum metodu kaldırınca uygulama sorunsuz açılıyor ama metod varken daha uygulama açılmadan çöküyor

private void ayaryukle() {
String pozisyon=ayarhafizasi.getString("renk","3");
switch (Integer.valueOf(pozisyon)){
case 0: anasayfa_arkaplan.setBackgroundColor(Color.RED);
break;
case 1: anasayfa_arkaplan.setBackgroundColor(Color.GREEN);
break;
}
Kodlarda bir hata görünmüyor

Logcat de gösterilen hata bu

01-11 20:26:13.900 7782-7782/? E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{deneme.myapplication/deneme.myapplication.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at deneme.myapplication.MainActivity.ayaryukle(MainActivity.java:54)
at deneme.myapplication.MainActivity.onCreate(MainActivity.java:36)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
at android.app.ActivityThread.access$600(ActivityThread.java:141) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5041) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
at dalvik.system.NativeStart.main(Native Method) 





< Bu mesaj bu kişi tarafından değiştirildi Grkwnxs -- 12 Ocak 2017; 0:2:48 >

M
8 yıl
Yarbay

MainActivity kodunu komple yazabilir misin ?

NullPointer i tam olarak neyin null gelmesinden dolayi aliyorsun ?



< Bu ileti tablet sürüm kullanılarak atıldı >
Bu mesaja 1 cevap geldi.
G
8 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: Mephalay

MainActivity kodunu komple yazabilir misin ?

NullPointer i tam olarak neyin null gelmesinden dolayi aliyorsun ?

package deneme.myapplication;

import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;

public class MainActivity extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
int sayma;
Button buton;
SharedPreferences hafiza, ayarhafizasi;
RelativeLayout anasayfa_arkaplan;
Boolean sesdurumu, titresimdurumu;

@Override
protected void onPause() {
SharedPreferences.Editor editor= hafiza.edit();
editor.putInt("sayma_anahtarı", sayma);
editor.commit();
super.onPause();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buton= (Button) findViewById(R.id.button);
hafiza= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
ayarhafizasi= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
ayaryukle();
anasayfa_arkaplan= (RelativeLayout) findViewById(R.id.anasayfa_arkaplan);
sayma=hafiza.getInt("sayma_anahtarı", 0);
buton.setText(""+sayma);
buton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
sayma++;
buton.setText(""+sayma);
}
});
}

private void ayaryukle() {
String pozisyon=ayarhafizasi.getString("renk","3");
switch (Integer.valueOf(pozisyon)){
case 0: anasayfa_arkaplan.setBackgroundColor(Color.RED);
break;
case 1: anasayfa_arkaplan.setBackgroundColor(Color.GREEN);
break;
case 2: anasayfa_arkaplan.setBackgroundColor(Color.BLUE);
break;
case 3: anasayfa_arkaplan.setBackgroundColor(Color.DKGRAY);
break;
case 4: anasayfa_arkaplan.setBackgroundColor(Color.LTGRAY);
break;

}
sesdurumu=ayarhafizasi.getBoolean("ses", false);
titresimdurumu=ayarhafizasi.getBoolean("titresim", false);
ayarhafizasi.registerOnSharedPreferenceChangeListener(MainActivity.this);

}

@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.menu_main,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
int id=item.getItemId();
if (id==R.id.sifirla){
sayma=0;
buton.setText(""+sayma);
return true;
}
if (id==R.id.ayarlar){
Intent ıntent=new Intent(getApplicationContext(), ayarlar.class);
startActivity(ıntent);
return true;
}

return super.onOptionsItemSelected(item);
}

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
ayaryukle();
}
}




Biraz karışık oldu kusura bakmayın. NullPointer hakkında hiç bilgim yok acemiyim java da aslında kodlarda hata olmaması gerek java dersindeki örneği birebir uyguluyorum.





< Bu mesaj bu kişi tarafından değiştirildi Grkwnxs -- 12 Ocak 2017; 2:16:1 >
Bu mesaja 1 cevap geldi.
B
8 yıl
Binbaşı

ayar yukle fonksiyonunu anasayfa_arkaplan değişkenini tanımladıktan sonra çalıştırman gerekiyor.


Bu mesaja 1 cevap geldi.

Bu mesajda bahsedilenler: @Grkwnxs
G
8 yıl
Yarbay
Konu Sahibi

quote:

Orijinalden alıntı: bersgurs

ayar yukle fonksiyonunu anasayfa_arkaplan değişkenini tanımladıktan sonra çalıştırman gerekiyor.

Çok teşekkürler



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.