Соглашение об именах для передачи данных через дополнительные функции в android

при передаче дополнительных функций, таких как Intent.putExtra( "myName" , myName), что такое соглашение для имени дополнительного?

т.е.: если вы передаете данные между двумя действиями, оба будут помещать/извлекать данные под идентификатором "myName" , но я должен просто жестко указывать "myName" всюду или сохранять значение в R.values.string?

Ответ 1

Hardcoding определенно не является идеальным решением.

Соглашение, используемое в платформе 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);

Ответ 2

Единственное, что я видел в документации, это то, что дополнительные ключи должны начинаться с имени пакета. Однако я не полностью понимаю это, и приложение работает Ok.

Я бы предпочел использовать R.string.some_key в коде, чтобы он был чистым и сухим.