¿Cómo puedo mostrar el diseño de MainActivity en el método onCreate ()?
Acabo de empezar a estudiar android, y tipo de perplejo con el diseño de dibujo en la pantalla. Lo que estoy tratando de hacer es,
1> mostrar el diseño de MainActivity – que está diseñado en archivo de diseño xml
2> espera 2 segundos, mostrando MainActivity
3> Pase a la siguiente Actividad
Y con mi código reciente, muestra sólo pantalla en blanco blanco durante 2 segundos, y luego la siguiente actividad aparece.
Este es mi código fuente para MainActivity, ahora.
public class MainActivity extends AppCompatActivity { Intent settingIntent; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override protected void onStart(){ super.onStart(); try { Thread.sleep(2000); } catch(InterruptedException e) { // } settingIntent = new Intent(this,SettingActivity.class); startActivity(settingIntent); } }
¿Cómo puedo hacer que esto funcione como mi intención?
Sólo puede utilizar el método predeterminado de View
s – postDelayd
findViewById(android.R.id.content).postDelayed(new Runnable() { @Override public void run() { Intent settingIntent = new Intent(MainActivity.this, SettingActivity.class); MainActivity.this.startActivity(settingIntent); } }, 2000);
escríbelo después
setContentView(R.layout.activity_main);
y quitar onStart
Cuando llamas a dormir, estás pausando el hilo de la interfaz de usuario. Lo que no es lo que buscas. En su lugar, haga lo siguiente:
@Override protected void onStart(){ super.onStart(); new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { @Override public void run() { settingIntent = new Intent(MainActivity.this,SettingActivity.class); MainActivity.this.startActivity(settingIntent); } }, 2000); }
EDITAR
Como Commonware ha señalado correctamente, esto tiene el potencial de introducir una fuga de memoria. Usted debe considerar el uso de la solución @yidavewu ha publicado.
Lo que sé es onStart callback dice que acitivity está a punto de ser mostrado. Así que todavía no se muestra. La mejor opción es poner el código para mostrar una nueva actividad en onResume callback.