Я изучаю Android (по иронии судьбы из кросса сайта для разработчиков из Google и SO), и у меня возникли проблемы с ранним шагом.Порядок событий, к которым я иду: 1. Загрузите всплывающую страницу 2. Через 5 секунд (это временно ... в конечном итоге будет фактически использовано для покрытия времени загрузки), переключитесь на основной вид 3. На загрузке основного вида, всплывающее окно (в настоящее время alertDialog), которое дает пользователю две опции нажатия кнопки
У меня все это работает, за исключением одной проблемы.Придирчивое окно появляется сразу же, когда появляется всплывающая страница (при запуске приложения).Вы можете видеть, что под всплывающим окном нормально работает заставка, она ждет 5 секунд, а затем переключается на главную.Может кто-нибудь сказать мне, что я делаю неправильно, пытаясь заставить всплывающее окно НЕ всплывать, пока счетчик заставок не будет сделан?Главная страница Java вставлена ниже:
public class MyProject extends Activity {
protected Dialog mSplashDialog;
private static final int NAG_BOX = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyStateSaver data = (MyStateSaver) getLastNonConfigurationInstance();
if (data != null) {
// Show splash screen if still loading
if (data.showSplashScreen) {
showSplashScreen();
}
setContentView(R.layout.main);
showDialog(NAG_BOX);
// Rebuild your UI with your saved state here
} else {
showSplashScreen();
setContentView(R.layout.main);
// Do your heavy loading here
}
}
@Override
public Object onRetainNonConfigurationInstance() {
MyStateSaver data = new MyStateSaver();
// Save your important data here
if (mSplashDialog != null) {
data.showSplashScreen = true;
removeSplashScreen();
}
return data;
}
/**
* Removes the Dialog that displays the splash screen
*/
protected void removeSplashScreen() {
if (mSplashDialog != null) {
mSplashDialog.dismiss();
mSplashDialog = null;
}
}
/**
* Shows the splash screen over the full Activity
*/
protected void showSplashScreen() {
mSplashDialog = new Dialog(this, R.style.SplashScreen);
mSplashDialog.setContentView(R.layout.splash);
mSplashDialog.setCancelable(false);
mSplashDialog.show();
// Set Runnable to remove splash screen just in case
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
removeSplashScreen();
}
}, 5000);
}
/**
* Simple class for storing important data across config changes
*/
private class MyStateSaver {
public boolean showSplashScreen = false;
// Your other important fields here
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case NAG_BOX:
// This example shows how to add a custom layout to an AlertDialog
LayoutInflater factory = LayoutInflater.from(this);
final View textEntryView = factory.inflate(R.layout.nagbox, null);
return new AlertDialog.Builder(MyProject.this)
.setView(textEntryView)
.setNegativeButton("Maybe Later", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dismissDialog(NAG_BOX);
}
})
.setPositiveButton("Go To Site", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Uri url = Uri.parse("http://www.google.com");
Intent intent = new Intent(Intent.ACTION_VIEW, url);
startActivity(intent);
}
})
.create();
}
return null;
}
}