Я только начал изучать программирование в андроиде, и, работая над учебником по макету Android, я заметил, что они создали новый Intent со следующим кодом.
// Create an Intent to launch an Activity for the tab (to be reused) intent = new Intent().setClass(this, ArtistsActivity.class);
До сих пор все книги, которые я прочитал, создали новое намерение, используя
intent = new Intent(this, ArtistActivity.class);
И задавался вопросом, существует ли разница между двумя строками кода.
Они эквивалентны.
На основе комментария из учебника …
// Create an Intent to launch an Activity for the tab (to be reused)
Кажется, они просто используют метод .setClass()
вместо Constructor
который делает класс более явным, поскольку созданный объект Intent будет повторно использован, и, вероятно, его снова .setClass()
.
Нет никакой практической разницы. Есть только разница в том, как это делается. Один использует конструктор, а другой – сеттер. Но конечный результат точно такой же. См. Документацию.
Вы можете использовать .setClass
когда один и тот же Intent может иметь два разных класса в зависимости от некоторого состояния. Вот пример:
Intent resultIntent = new Intent(); if (condition) { resultIntent.setClass(getApplicationContext(), XXXX.class); startActivity(resultIntent); }else { resultIntent.setClass(getApplicationContext(), YYYY.class); }