所以......我开发了一个成功运行的启动画面。如何让它运行一次(并且只运行一次)?我想建立一个注册屏幕,但我只希望它为用户出现一次。
帮助!
Amani Swann
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.content.Intent;
import com.nfc.linkingmanager.R;
public class SplashScreen extends Activity {
private boolean mIsBackButtonPressed;
private static final int SPLASH_DURATION = 1000;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash_screen);
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
finish();
if (!mIsBackButtonPressed) {
Intent intent = new Intent(SplashScreen.this, NewCore.class);
SplashScreen.this.startActivity(intent);
}
}
}, SPLASH_DURATION);
}
@Override
public void onBackPressed() {
mIsBackButtonPressed = true;
super.onBackPressed();
}
}
答案 0 :(得分:3)
使用SharedPreferences
存储已经显示屏幕的事实;一开始,你检查这个,如果有的话,你可以通过启动下一个活动来替换活动,并立即为启动画面调用finish()
。
答案 1 :(得分:1)
您需要在共享偏好设置中存储标记,例如
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this );
finish();
if (prefs.getBoolean("SplashFlag", false)&&!mIsBackButtonPressed){
Intent intent = new Intent(SplashScreen.this, NewCore.class);
SplashScreen.this.startActivity(intent);
}else {
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean("SplashFlag", true); // value to store
//again there are values for int, long, string, float, boolean
editor.commit();//This is needed or the edits will not be put into the prefs file
}
答案 2 :(得分:0)
使用SharedPreferences您可以存储boolean
例如seenSplash
,您可以默认为false。然后使用if检查它是否为false然后显示启动。在用户看到启动画面后获得Editor
,您将该布尔值更改为true。
不要忘记commit()
编辑器上的更改。
答案 3 :(得分:0)
在您的注册屏幕中获取登录详细信息,并与您在共享首选项中保存的值进行比较。或者像用户名这样的硬编码是admin,密码是admin。两个值都是真的只是为了进入启动画面,否则重定向到其他任何你喜欢的页面。
答案 4 :(得分:0)
有两种方法可以做到这一点
第1次
finish();
SplashScreen.this.startActivity(intent);
Android Manifest中的第二名 你宣布启动画面活动的地方
添加此
android:noHistory=true