I have two activities in my app. First activity SplashScreen
and other SplashActivity
. I have sharedPreferences
in SplashScreen
but i want to set value of this true in SplashActivity
. I think If it is possible to create a method in SplashActivity
which run only once i.e this method compare the boolean
value of SplashScreen
(like this is false at start). After first run its set to true forever and this method is skipped. I've tried a lot to do this but not successful.
SplashScreen-
public class SplashScreen extends Activity
{
/** Called when the activity is first created. */
TimerTask task;
SharedPreferences pref;
SharedPreferences.Editor ed;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_screen);
pref = getSharedPreferences("ActivityPREF", Context.MODE_PRIVATE);
Log.v("","onCreate is calling");
if(pref.getBoolean("activity_executed", false))
{
Log.v("","Before if called");
setContentView(R.layout.splash_screen);
Log.v("","after if called");
new Handler().postDelayed(csRunnable1, 5000);
}
else
{
new Handler().postDelayed(csRunnable2, 5000);
}
}
Runnable csRunnable1=new Runnable()
{
@Override
public void run()
{
Intent intent = new Intent(SplashScreen.this, SplashActivity.class);
startActivity(intent);
finish();
}
};
Runnable csRunnable2=new Runnable()
{
@Override
public void run()
{
Intent intent = new Intent(SplashScreen.this, LoginActivity.class);
startActivity(intent);
finish();
}
};
}
SplashActivity-
public class SplashActivity extends Activity implements OnClickListener
{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
//////////////////////////////////////////////////////////////////////
//////// GAME MENU /////////////////////////////////////////////////
Button playBtn = (Button) findViewById(R.id.playBtn);
playBtn.setOnClickListener(this);
Button settingsBtn = (Button) findViewById(R.id.settingsBtn);
settingsBtn.setOnClickListener(this);
Button rulesBtn = (Button) findViewById(R.id.rulesBtn);
rulesBtn.setOnClickListener(this);
Button exitBtn = (Button) findViewById(R.id.exitBtn);
exitBtn.setOnClickListener(this);
}
/**
* Listener for game menu
*/
@Override
public void onClick(View v) {
Intent i;
switch (v.getId()){
case R.id.playBtn :
//once logged in, load the main page
//Log.d("LOGIN", "User has started the game");
//Get Question set //
List<Question> questions = getQuestionSetFromDb();
//Initialise Game with retrieved question set ///
GamePlay c = new GamePlay();
c.setQuestions(questions);
c.setNumRounds(getNumQuestions());
((CYKApplication)getApplication()).setCurrentGame(c);
//Start Game Now.. //
i = new Intent(this, QuestionActivity.class);
startActivityForResult(i, Constants.PLAYBUTTON);
finish();
break;
case R.id.rulesBtn :
i = new Intent(this, RulesActivity.class);
startActivityForResult(i, Constants.RULESBUTTON);
finish();
break;
case R.id.settingsBtn :
i = new Intent(this, SettingsActivity.class);
startActivityForResult(i, Constants.SETTINGSBUTTON);
finish();
break;
case R.id.exitBtn :
finish();
break;
}
}
I know this is the line i need to edit in SplashActivity
but whenever i add this my app crash.
ed = pref.edit();
ed.putBoolean("activity_executed", true);
ed.commit();
May be you are doing something wrong. you can do simply this in splash screen
or in your splashactivity oncreate call this
Also call this in your SplashActivity