Соглашение об именах для передачи данных через дополнения в Android
При передаче дополнений, таких как Intent.putExtra("myName", myName), каково соглашение для имени дополнения?
То есть: если данные передаются между двумя действиями, оба помещают / извлекают данные под идентификатором "myName", но должен ли я просто жестко закодировать "myName" везде или оставить значение в R.values.string?
2 ответа
Жесткое кодирование определенно не идеальное решение.
Соглашение, используемое в платформе Android, заключается в создании public static final
константы по имени EXTRA_FOO
(где FOO - название вашего ключа), например Intent.EXTRA_ALARM_COUNT
Фактическое значение константы - это строка, разделенная именем, чтобы избежать конфликтов: "android.intent.extra.ALARM_COUNT"
Если вы не хотите создавать зависимости между вашими действиями с помощью констант, то вам следует рассмотреть возможность помещения этих ключей в строковые значения в вашем файле strings.xml. Я склонен следовать тому же соглашению об именах при определении ключей в xml:
<string name="EXTRA_MY_NAME">com.me.extra.MY_NAME</string>
Он все еще читается как статическая константа со стороны Java:
getString(R.string.EXTRA_MY_NAME);
Единственное, что я видел в документации, это то, что дополнительные ключи должны начинаться с имени пакета. Однако я не полностью следую этому, и приложение пока работает нормально.
Я бы предпочел использовать R.string.some_key в коде, чтобы он был чистым и сухим.