Попробуйте следующее:
getSku: function () {
return $.getJSON(Routing.generate(this.options.urls.get))
.promise();
}
Когда вы вызываете getSku (), он возвращает объект обещания. Вам нужно дождаться обещания разрешить или не обработать результат следующим образом.
getSku().done((data) => {
console.log(data);
}).fail(() => {
console.log( "something went wrong" );
});
Чтобы узнать больше о обещаниях: https://developer.mozilla.org/en-US / документы / Web / JavaScript / Справка / Global_Objects / Promise
В NewUserActivity переопределите метод OnBackPressed (), затем вызовите финиш; убить текущую активность; См. Пример реализации ниже:
@Override public void onBackPressed () {
killActivity();
})
.setNegativeButton("No", null)
.show();
}
private void killActivity() {
finish();
}
С более новой версией Android> = API 16 использовать finishAffinity ()
finishAffinity (); сделал свое дело.
Поскольку я читаю везде, предлагается использовать just finish (); Для более нового API (я использую> = 17) пришлось использовать finishAffinity ();
Вы можете использовать этот код:
Intent intent=new Intent(NewUserActivity.this, GameChooseActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
NewUserActivity.this.finish();
Исходя из моего понимания, вам нужна однократная настройка. Ваш код в порядке, единственная проблема, которую я вижу, состоит в том, что когда вы снова открываете приложение, оно начинается с самого начала. Это связано с тем, что в вашем коде нет логики, чтобы проверить, выполнили ли вы одноразовую настройку. Для этого вы можете использовать SharedPreference
.
Вы можете создать Splash Activity и проверить, выполнена ли разовая настройка или нет на основе логического флага.
Итак, в первый раз пользователь открывает приложение
blockquote>
SplashActivity -> NewUserActivity ---> GameChooseActivity
в противном случае
[ 1110] SplashActivity -> GameChooseActivitySplashActivity extends AppcompatActivity{ boolean hasDoneSetUp = false; private SharedPreferences pref; private Editor editor; protected void onCreate(Bundle sis) { super.onCreate(sis); setContentView(R.layout.splash); pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); editor = pref.edit(); hasDoneSetUp = checkForSetUp(); if(!hasDoneSetUp) startOneTimeSetUp(); else startGameChooseActivity(); } }
Как выполнить одноразовую настройку?
Установите
hasDoneSetUp
значение true, когда будет выполнена одноразовая настройка, и сохраните это значение. вSharedPreference
, чтобы при повторном открытии приложения проверялось, была ли выполнена однократная настройка или нет.Сохраните ваши другие данные в SharedPreference или SQLiteDatabase и получите эти данные в GameChooseActivity.
public void startOneTimeSetUp(){ if(!TextUtils.isEmpty(editUsername.getText().toString().trim())) { uploadUserData(); Intent intent = new Intent(SplashActivity.this, GameChooseActivity.class); SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); Editor editor = pref.edit(); editor.putBoolean("hasDoneSetup", true); editor.commit(); finish(); } } public boolean checkForSetUp(){ return pref.getBoolean("hasDoneSetup", true); } public void startGameChooseActivity(){ Intent intent = new Intent(SplashActivity.this, GameChooseActivity.class); startActivity(intent); }
Соответствующие ссылки
Если вы не знаете Что такое SharedPreference?
Если вы не знаете, как использовать SharedPreference [ 116] отметьте это