Perangkat Pengemasan Aset Android ( aapt
) telah menjadi sangat ketat dalam rilis terbarunya dan sekarang digunakan untuk semua versi Android. Kesalahan aapt yang Anda dapatkan dihasilkan karena tidak lagi memungkinkan penspesifikasi format non-posisional .
Berikut adalah beberapa ide bagaimana Anda dapat memasukkan% -simbol dalam string sumber daya Anda.
Jika Anda tidak memerlukan penentu format atau pengganti dalam string, Anda cukup menggunakan formatted
atribut dan mengaturnya menjadi false
:
<string formatted="false">%a + %a == 2%a</string>
Dalam hal ini string tidak digunakan sebagai string format untuk Formatter
sehingga Anda tidak perlu melarikan diri% -simbol Anda. String yang dihasilkan adalah "% a +% a == 2% a".
Jika Anda menghilangkan formatted="false"
atribut, string digunakan sebagai string format dan Anda harus melarikan diri dari% -simbol. Ini dilakukan dengan benar dengan double-%:
<string>%%a + %%a == 2%%a</string>
Sekarang aapt
memberi Anda tidak ada kesalahan tetapi tergantung pada bagaimana Anda menggunakannya, string yang dihasilkan bisa menjadi "%% a + %% a == 2 %% a" jika a Formatter
dipanggil tanpa argumen format apa pun :
Resources res = context.getResources();
String s1 = res.getString(R.string.str);
// s1 == "%%a + %%a == 2%%a"
String s2 = res.getString(R.string.str, null);
// s2 == "%a + %a == 2%a"
Tanpa xml dan kode apa pun, sulit untuk mengatakan apa sebenarnya masalah Anda, tetapi mudah-mudahan ini membantu Anda memahami mekanisme sedikit lebih baik.