PDA

View Full Version : ذخیره مقدار toggle با استفاده از saredperefrences



zahra.mf
جمعه 03 مرداد 1393, 16:44 عصر
سلام
من یه toggle دارم که میخوام مقدار اون رو با استفاده از sharedpreferences ذخیره کنم تا با استفاده از اون مقدار به کاربر این اجازه رو بدم تا splash screen رو فعال یا غیر فعال کنه

برنامه دوتا کلاس داره که اولین کلاس SplashActivity هست که splash توی اون تعریف شده و به صورت پیش فرض برای بار اول باید splash screen نمایش داده بشه

package com.test.splash;





import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;


public class SplashActivity extends Activity {
/** Called when the activity is first created. */

public SharedPreferences preferences;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

SharedPreferences sharedPref = getSharedPreferences("sharedPref1", MODE_PRIVATE);


boolean sharedPref1 = preferences.getBoolean("sharedPref1", true);
//???.setChecked(sharedPrefs.getBoolean("NameOfThingToSave", true));
if (sharedPref1 = true) //if (tgpref) may be enough, not sure
{

MediaPlayer mp = MediaPlayer.create(this, R.raw.play);

mp.start();
Handler handler = new Handler();
handler.postDelayed(new Runnable(){
public void run(){
finish();
startActivity(new Intent (SplashActivity.this,asli.class));
}
}, 1000);
}
else
{
startActivity(new Intent (SplashActivity.this,asli.class));
}
}
}




کلاس دوم asli هست و toggle و sharedperefrences توی اون تعریف شده و مقداری که توی این کلاس ذخیره میشه رو توی کلاس SplashAvtivity استفاده میکنه

package com.test.splash;



import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ToggleButton;






public class asli extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.asli);


final ToggleButton toggle = (ToggleButton) findViewById(R.id.toggleButton1);
toggle.setOnClickListener(new OnClickListener(){
public void onClick(View v)
{
if (toggle.isChecked())
{
SharedPreferences.Editor editor = getSharedPreferences("sharedPref1", MODE_PRIVATE).edit();
editor.putBoolean("sharedPref1", true);
editor.commit();
}
else
{
SharedPreferences.Editor editor = getSharedPreferences("sharedPref2", MODE_PRIVATE).edit();
editor.putBoolean("sharedPref2", false);
editor.commit();
}
}


});


}
}




ولی موقع اجرای برنامه این خطا رو میده unfortunately, splash has stopped نمیدونم مشکل از کجاست اگه کمک کنید ممنون میشم :ناراحت:

akbar8298
جمعه 03 مرداد 1393, 20:28 عصر
log خطا رو اینجا بزارید تا ببینیم

zahra.mf
جمعه 03 مرداد 1393, 23:39 عصر
07-25 18:37:33.400: E/AndroidRuntime(551): FATAL EXCEPTION: main
07-25 18:37:33.400: E/AndroidRuntime(551): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.splash/com.test.splash.SplashActivity}: java.lang.NullPointerException
07-25 18:37:33.400: E/AndroidRuntime(551): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1956)
07-25 18:37:33.400: E/AndroidRuntime(551): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:1981)
07-25 18:37:33.400: E/AndroidRuntime(551): at android.app.ActivityThread.access$600(ActivityThre ad.java:123)
07-25 18:37:33.400: E/AndroidRuntime(551): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1147)
07-25 18:37:33.400: E/AndroidRuntime(551): at android.os.Handler.dispatchMessage(Handler.java:99 )
07-25 18:37:33.400: E/AndroidRuntime(551): at android.os.Looper.loop(Looper.java:137)
07-25 18:37:33.400: E/AndroidRuntime(551): at android.app.ActivityThread.main(ActivityThread.jav a:4424)
07-25 18:37:33.400: E/AndroidRuntime(551): at java.lang.reflect.Method.invokeNative(Native Method)
07-25 18:37:33.400: E/AndroidRuntime(551): at java.lang.reflect.Method.invoke(Method.java:511)
07-25 18:37:33.400: E/AndroidRuntime(551): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:784)
07-25 18:37:33.400: E/AndroidRuntime(551): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:551)
07-25 18:37:33.400: E/AndroidRuntime(551): at dalvik.system.NativeStart.main(Native Method)
07-25 18:37:33.400: E/AndroidRuntime(551): Caused by: java.lang.NullPointerException
07-25 18:37:33.400: E/AndroidRuntime(551): at com.test.splash.SplashActivity.onCreate(SplashActi vity.java:23)
07-25 18:37:33.400: E/AndroidRuntime(551): at android.app.Activity.performCreate(Activity.java:4 465)
07-25 18:37:33.400: E/AndroidRuntime(551): at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1049)
07-25 18:37:33.400: E/AndroidRuntime(551): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:1920)
07-25 18:37:33.400: E/AndroidRuntime(551): ... 11 more

:((