Quiero usar una fuente personalizada en mi biblioteca de complementos de Android mientras uso AlertDialog . Ahora aquí está el código para mostrar AlertDialog usando una fuente personalizada.
AlertDialog alertDialog = new AlertDialog.Builder(mainActivity).setTitle("Title").setMessage("Message Text").create(); alertDialog.setButton(AlertDialog.BUTTON_NEGATIVE, "Cancel", dialogOnClickListener); TextView alertMessageTextView = (TextView) alertDialog.findViewById(R.id.message); // I am getting error here TextView alertTitleTextView = (TextView) alertDialog.findViewById(android.R.id.title); // I am getting error here Typeface customFont = Typeface.createFromAsset(mainActivity.getResources().getAssets(), "fonts/lobster-regular.ttf"); alertMessageTextView.setTypeface(customFont); alertTitleTextView.setTypeface(customFont); alertDialog.show();Estoy recibiendo un error:
Error Unity AndroidJavaException: java.lang.NoSuchFieldError: No static field message of type I in class Lcom/cptech/pluginexample/R$id; or its superclasses (declaration of 'com.cptech.pluginexample.R$id' appears in base.apk)
He colocado mi archivo de fuentes en la carpeta "Activos/Recursos" de Unity. Por lo tanto, en la aplicación final, los recursos de fuentes aparecen en la carpeta "activos/fuentes" . Pero, sin embargo, esto no importa, ya que puedo usar una fuente personalizada en otros TextView (s).
El único problema es que no puede encontrar el mensaje y el título de AlertDialog, como creo. Cualquier ayuda sería apreciada.
Pocos cambios:
Use show() en lugar de create() cuando construya AlertDialog :
AlertDialog alertDialog = new AlertDialog.Builder(mainActivity).setTitle("Title").setMessage("Message Text").show();Luego, reemplaza esta línea:
TextView messageTextView = (TextView) alertDialog.findViewById(R.id.message); Con android.R.id.message en su lugar, así:
TextView messageTextView = (TextView) alertDialog.findViewById(android.R.id.message); Y asegúrese de no import com.android.R en la parte superior de su archivo. Necesita este cambio porque el message de identificación no es un activo en su módulo, es un activo predeterminado de una biblioteca de Android. Entonces, el R que está usando en este momento proviene de su paquete: debe especificar R de android.R .
Lo último rápido, tenga cuidado con el nombre de la variable de la vista de texto cuando configura el texto, debe cambiarse a messageTextView