рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
рд╕реНрдереИрддрд┐рдХ рд╕рдВрджрд░реНрдн
рд╕рдорд╕реНрдпрд╛: рдореИрдВ рдХреБрдЫ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╕реНрдерд┐рд░ рд╕рдВрджрд░реНрдн (рд╕рдЬрд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрдж) рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛
рд╣реВрдВ ред
рд╕рдорд╛рдзрд╛рди: рдореИрдВрдиреЗ рд╕реНрдЯреИрдХрдУрд╡рд░рдлрд╝реНрд▓реЛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдпрд╛, рдЬреЛ рдХрд┐ рдПрдХ рд╕реНрдереИрддрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рдерд╛ред
рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ - рдФрд░ рдЗрд╕реЗ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдЕрдиреБрд╡рд╛рдж, рдЪрд┐рддреНрд░, рд╢реИрд▓реАред
рдЬрд╣рд╛рдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: GUI рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, LayoutInflator (рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) рдХреЗ рд╕рд╛рдеред
рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
public class ApplicationContext extends android.app.Application { @NotNull private static ApplicationContext instance; public ApplicationContext() { instance = this; } @NotNull public static ApplicationContext getInstance() { return instance; } }
рдФрд░
AndroidManifest.xml:
<manifest xmlns:a="http://schemas.android.com/apk/res/android"> <application a:name=".ApplicationContext"> // ... </application> </manifest>
рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдПрдВрдбреНрд░реЙрдЗрдб рдПрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рд╕рдорд╕реНрдпрд╛: рдореИрдВ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдПрдкреАрдЖрдИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, GUI рддрддреНрд╡ - рджреГрд╢реНрдп) рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛
рд╣реВрдВ ред
рд╕рдорд╛рдзрд╛рди: рдПрдВрдбреНрд░реЙрдЗрдб рдПрдХ рдЦреБрд▓рд╛ рдордВрдЪ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд╣рд╛рдВ рд▓реЗрдВ рдФрд░ рдЕрдиреБрдкрд▓рдмреНрдз рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЕрдкрдиреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдиреБрдХрд╕рд╛рди рд╣реИрдВ: рдЖрдкрдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╡рд░реНрдЧреЛрдВ рдХреА рд╕рдВрдЪрд╛рд▓рдирд╢реАрд▓рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдФрд░ рдЗрд╕ рд╕реНрддрд░ рдХреЗ рдПрдкреАрдЖрдИ (рдпрд╣ рдХрд┐рддрдирд╛ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИ) рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдЙрджрд╛рд╣рд░рдг: рдирдВрдмрд░рдкрд┐рдХрд░ рдХреЗрд╡рд▓ 11 рд╕реНрддрд░ рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рд╕реНрддрд░ 4 рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ
: рдЧрд┐рддреБрдм рдХреЛ
рджреЗрдЦреЗрдВXML API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рд╕рдорд╕реНрдпрд╛: рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ рдПрдХ рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рдПрдХреНрд╕рдПрдордПрд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдПрдХ рджреГрдврд╝рддрд╛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕реЗ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП)ред
рдЖрдорддреМрд░ рдкрд░, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ JAXB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди JAXB Android рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
рд╕рдорд╛рдзрд╛рди: рдПрдХ рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕рд░рд▓ (XML рдХреНрд░рдорд╛рдВрдХрди)
simple.sourceforge.net рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛рдХреИрд╕реЗ рдХрд░реЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓?рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:
<dependency> <groupId>org.simpleframework</groupId> <artifactId>simple-xml</artifactId> <version>2.6.1</version> <exclusions> <exclusion> <artifactId>stax-api</artifactId> <groupId>stax</groupId> </exclusion> </exclusions> </dependency>
рдиреЛрдЯ: рдмрд╣рд┐рд╖реНрдХрд░рдг рдХреЛ рд╕реНрдЯреЗрдХреНрд╕-рдПрдкреА рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдЕрдиреНрдпрдерд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдмрдиреЗрдЧрд╛ (рдПрдВрдбреНрд░реЙрдЗрдб рдПрдкреАрдЖрдИ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ)
рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдПрдиреЛрдЯреЗрд╢рди (@Root,
Transient ,
Element ) рдХреЗ рд╕рд╛рде рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
@Root public class Var implements IConstant { @Transient private Integer id; @Element @NotNull private String name; @Element(required = false) @Nullable private String value;
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ xml рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ:
final StringWriter sw = new StringWriter(); final Serializer serializer = new Persister(); try { serializer.write(vars, sw); } catch (Exception e) { throw new RuntimeException(e); }
Xml рд╕реЗ рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
final String value = getVarString(); final Serializer serializer = new Persister(); try { final Vars vars = serializer.read(Vars.class, value);
рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХрд╛ рднрдВрдбрд╛рд░рдг (рдЖрд░ рд╡рд░реНрдЧ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЫреЛрдбрд╝рдХрд░)
рд╕рдорд╕реНрдпрд╛: рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдкрд╛рд╕ рдЖрд░ рдХреНрд╖реЗрддреНрд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд╣реИ, рдФрд░ рдЬрд╣рд╛рдВ рднреА рдЖрдк рдЗрд╕ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдЗрд╕ рд╡рд░реНрдЧ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред
рд╕рдорд╛рдзрд╛рди: рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди-рд╕реНрддрд░реАрдп рдЕрдиреБрд╡рд╛рдж рдХреИрд╢ рдЬреЛ рдЕрдиреБрд╡рд╛рдж рдХреЛ рдирд╛рдо рдФрд░ рднрд╛рд╖рд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЕрдиреБрд╡рд╛рдж рдПрдХ рд╕реНрдерд┐рд░ рд╕рдВрджрд░реНрдн рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХреЛрдб рдЙрджрд╛рд╣рд░рдг:
public enum TranslationsCache { instance;
рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
try{
рдирд┐рд╖реНрдХрд░реНрд╖
рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
рд╕реЛрд░реНрд╕ рдХреЛрдб
github.com рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред
Android.market рдкрд░ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!