当 Toast 在它之前调用时 StartActivity 不工作
StartActivity not working when Toast called before it
当我在开始另一个 activity 之前不调用 Toast 时,事情会按预期进行。但是如果我在 startActivity 之前调用 Toast,activity 将不会启动。请检查此代码以了解我的问题:
class LoginTask extends HttpAsyncTask {
@Override
protected void onPostExecute(String result) {
if (result != null) {
LoginResponse loginResponse = (LoginResponse) getMappedModel(result, LoginResponse.class);
if(loginResponse.getResult().equals("success")) {
/*startActivity works only if I comment this line*/ Toast.makeText(getBaseContext(), "Logged in Successfully!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
} else {
Toast.makeText(getBaseContext(), "Wrong username or password!", Toast.LENGTH_LONG).show();
}
}
}
}
在没有看到所有代码的情况下,我建议使用 getApplicationContext,这将 return 应用程序的上下文。
Toast.makeText(getApplicationContext (), "Logged in Successfully!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext (), MainActivity.class);
我不确定为什么您的 Toast 会阻止 MainActivity 启动,但您应该能够通过将显示代码的 toast 移动到 MainActivity
的 OnCreate
方法中来修复它。您还可以添加额外的特殊意图布尔值,showsuccesstoast
这将在 MainActivity.onCreate 内部指示应该显示吐司。
当我在开始另一个 activity 之前不调用 Toast 时,事情会按预期进行。但是如果我在 startActivity 之前调用 Toast,activity 将不会启动。请检查此代码以了解我的问题:
class LoginTask extends HttpAsyncTask {
@Override
protected void onPostExecute(String result) {
if (result != null) {
LoginResponse loginResponse = (LoginResponse) getMappedModel(result, LoginResponse.class);
if(loginResponse.getResult().equals("success")) {
/*startActivity works only if I comment this line*/ Toast.makeText(getBaseContext(), "Logged in Successfully!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);
} else {
Toast.makeText(getBaseContext(), "Wrong username or password!", Toast.LENGTH_LONG).show();
}
}
}
}
在没有看到所有代码的情况下,我建议使用 getApplicationContext,这将 return 应用程序的上下文。
Toast.makeText(getApplicationContext (), "Logged in Successfully!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getApplicationContext (), MainActivity.class);
我不确定为什么您的 Toast 会阻止 MainActivity 启动,但您应该能够通过将显示代码的 toast 移动到 MainActivity
的 OnCreate
方法中来修复它。您还可以添加额外的特殊意图布尔值,showsuccesstoast
这将在 MainActivity.onCreate 内部指示应该显示吐司。