@PathVariable
заключается в получении некоторого заполнителя из URI (Spring называет его шаблоном URI) - см. Справочник по весне Глава 16.3.2.2 Шаблоны шаблонов URI @RequestParam
также должен получить параметр из URI - см. Справочник по весне Глава 16.3.3.3 Параметры запроса привязки к параметрам метода с помощью @RequestParam Если URL http://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013
получает счета-фактуры для пользователя 1234 5 декабря 2013 года, метод контроллера будет выглядеть следующим образом:
@RequestMapping(value="/user/{userId}/invoices", method = RequestMethod.GET)
public List listUsersInvoices(
@PathVariable("userId") int user,
@RequestParam(value = "date", required = false) Date dateOrNull) {
...
}
Кроме того, параметры запроса могут быть необязательными, а по параметрам пути Spring 4.3.3 также может быть необязательным . Остерегайтесь: это может изменить иерархию пути URL и ввести конфликты сопоставления запросов. Например, /user/invoices
предоставит счета для пользователя null
или подробности о пользователе с идентификационными «счетами»?
Activity
не полностью инициализирован и готов к просмотру представлений до тех пор, пока onCreate()
не будет вызван в onCreate()
.
Объявляйте только следующие поля:
private EditText usernameField, passwordField;
private TextView error;
private ProgressBar progress;
] , а затем назначьте значения в onCreate
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
usernameField = (EditText)findViewById(R.id.username);
passwordField = (EditText)findViewById(R.id.password);
error = (TextView)findViewById(R.id.error);
progress = (ProgressBar)findViewById(R.id.progress);
}
Не может быть частью проблемы, но в качестве дополнительной рекомендации, Timer
запускает TimerTask
на фоне нить, и этого следует избегать в этом случае. Вместо этого замените Timer
на Handler
, чтобы запустить его в потоке пользовательского интерфейса.
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(SplashActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
}, 1500);
Handler
, хотя :) – user 16 April 2016 в 15:50