Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Atributos personalizados en fragmentos de Android

Me gustaría definir atributos personalizados en el fragmento de Android utilizando XML (sin utilizar parámetros adicionales del paquete) como declare-styleable en los controles personalizados. Pero no hay constructores con los parámetros de AttrSet, por lo que es posible? ¿Puedo anular public void onInflate(android.app.Activity activity, android.util.AttributeSet attrs, android.os.Bundle savedInstanceState) para obtener compatibilidad de atributos?

  • Registrarse como aplicación predeterminada para el tipo de archivo personalizado
  • Cerrar sesión Facebook Android SDK
  • Cómo agregar automáticamente miles de separadores como número se ingresa en EditText
  • ¿Por qué una clase de fragmento no puede ser válida?
  • Práctica recomendada para mantener los datos en la memoria y la base de datos al mismo tiempo en Android
  • ListView dinámico en la aplicación para Android
  • Ocultar día, mes o año de DatePicker en Android 5.0+ Lollipop
  • Cómo deshabilitar edittext en android
  • ¿Qué diferencia entre el visor estático y no estático en el Adaptador RecyclerView?
  • Depuración Reaccionar Nativo sobre adb tcpip
  • Notificaciones push en la plataforma Android
  • Establecer el elemento seleccionado por defecto del cuadro de diálogo de alerta de ListView en Android
  • 2 Solutions collect form web for “Atributos personalizados en fragmentos de Android”

    El enlace para Support4Demos se cambia o se puede cambiar para publicar la solución completa. Aquí va.

    1. Cree el archivo attrs.xml en la carpeta res / values. O agregue el contenido a continuación si el archivo ya existe.

       <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="MyFragment"> <attr name="my_string" format="string"/> <attr name="my_integer" format="integer"/> </declare-styleable> 

    2. Anular el delegado onInflate de fragmento y leer atributos en él

       /** * Parse attributes during inflation from a view hierarchy into the * arguments we handle. */ @Override public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) { super.onInflate(activity, attrs, savedInstanceState); Log.v(TAG,"onInflate called"); TypedArray a = activity.obtainStyledAttributes(attrs,R.styleable.MyFragment); CharSequence myString = a.getText(R.styleable.MyFragment_my_string); if(myString != null) { Log.v(TAG, "My String Received : " + myString.toString()); } int myInteger = a.getInt(R.styleable.AdFragment_my_integer, -1); if(myInteger != -1) { Log.v(TAG,"My Integer Received :" + myInteger); } a.recycle(); } 
    3. Pase estos atributos en su archivo de diseño como sigue. Solo un ejemplo

       <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="This is android activity" /> <fragment android:id="@+id/ad_fragment" android:name="com.yourapp.packagename.MyFragment" android:layout_width="fill_parent" android:layout_height="50dp" android:layout_alignParentBottom="true" app:my_string="Hello This is HardCoded String. Don't use me" app:my_integer="30" /> </RelativeLayout> 

    Eso es todo. Es una solución de trabajo.

    Al hacer esto si ve algún error de espacio de nombres en xml. Trate de limpiar el proyecto una y otra vez. Esto es patético, pero eclipse y adt se comportan mal algunas veces.

    Espero que ayude a otros 🙂

    Aclamaciones

     @Override public void onInflate(Activity activity, AttributeSet attrs, Bundle savedInstanceState) { super.onInflate(activity, attrs, savedInstanceState); // Your code here to process the attributes } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.