Bevor ich in Problem beschreiben, möchte ich darauf hinweisen, dass ich die anderen Threads weiß, die diese Frage stellen aber für mich war keiner in der Lage, mein Problem zu lösen.Anzeige Splash-Bildschirm nur, wenn die App gestartet wird und nicht jedes Mal, wenn die Aktivität mit Splash-Screen-Code heißt
Der Unterschied zwischen zuvor gestellten Fragen und meine Frage ist, dass ich Splash-Screen-Code in der Hauptaktivität und NICHT in einer anderen Aktivität habe, so habe ich keine Layout-XML-Datei dafür.
Also, das Problem ist, ich will nur Splash-Screen angezeigt werden, wenn die Anwendung gestartet wird, und dies wird perfekt durch den folgenden Code getan, aber wenn die main activity
(der Splash-Screen-Code enthält) wird durch eine andere Aktivität genannt Intent
mit , wird der Begrüßungsbildschirm erneut angezeigt.
Also, zuerst habe ich versucht, flag
Variable zu verwenden, 0
initiieren, wenn Aktivität erstellt wird und es um eins erhöhen, wenn Begrüßungsbildschirm einmal angezeigt wird. aber ich habe herausgefunden, dass es nicht funktioniert, weil es immer 0
wenn Aktivität erstellt wird.
So, jetzt versuche ich eine Zeichenfolge von der anderen Tätigkeit zu übergeben und zu versuchen, Splash-Screen wieder zu verhindern, wie in der folgenden Code dargestellt:
public class Registration extends ActionBarActivity {
public final static String EXTRA_MESSAGE = "com.kaushal.myapplication.MESSAGE";
DatabaseHelper myDb;
EditText username,password;
private ImageView splashImageView;
boolean splashloading = false;
int flag=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_registration);
String message = null;
Intent intent0 = getIntent();
message = intent0.getStringExtra(Registration.EXTRA_MESSAGE);//string from another activity.
if(!message.equals("signup has called me")) { //splash screen code in `if`
splashImageView = new ImageView(this);
//splashImageView.setBackgroundColor();
splashImageView.setImageResource(R.drawable.sexy);
setContentView(splashImageView);
splashloading = false;
Handler h = new Handler();
h.postDelayed(new Runnable() {
public void run() {
splashloading = false;
setContentView(R.layout.activity_registration);
username = (EditText) findViewById(R.id.username);
password = (EditText) findViewById(R.id.password);
}
}, 3000);
flag++;
}
if(flag==0){
username = (EditText) findViewById(R.id.username);
password = (EditText) findViewById(R.id.password);
}
myDb = new DatabaseHelper(this);
}
}
Hier Registration
ist der Name meiner Haupttätigkeit, die gestartet wird, wenn die App gestartet wird.
-Code der Methode einer anderen Aktivität sign Up
benannt, die eine Zeichenfolge übergibt:
public void backToRegistration(View view){
Intent intent0 = new Intent(this,Registration.class);
intent0.putExtra(EXTRA_MESSAGE, "signup has called me");
startActivity(intent0);
}
Was ist das Problem mit dieser Methode? Die App stürzt unmittelbar nach dem Start ab.
Fügen Sie die Startmodus-Eigenschaft in Ihre Hauptaktivitätsmanifestdatei ein. android: launchMode = "singleTop" –
funktioniert nicht für die Hauptaktivität (Registrierung) –
Aktivität, die für Splash-Bildschirm aufruft. Kommentiere deine Flaggen und anderen damit verbundenen Code. –