Соглашение об именах для передачи данных через дополнения в 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 в коде, чтобы он был чистым и сухим.

Другие вопросы по тегам