Mi clase abstracta ampliada de Activity clase consta de tres Views como se describe en el siguiente fragmento XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="@drawable/bg">

    <LinearLayout 
        android:id="@+id/top_border">
        ...
    </LinearLayout>

    <View 
        android:id="@+id/activity_content"
        ...
        />

    <LinearLayout 
        android:id="@+id/bottom_border">
        ...          
    </LinearLayout>
</LinearLayout>

Y en onCreate() método que establece este XML-diseño como del contenido de la vista.

Quiero que el Activitys que se extienden de este a reemplazar onCreate() y allí definir el activity_content View restantes fronteras inmutables.

Por ejemplo como este:

abstract public class MyActivity extends Activity {
   protected View mContent;

   @Override
   protected onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.common_layout);
      initializeContent();
   }

   abstract void initializeContent();  
}

class OneActivity extends MyActivity {

   @Override
   protected void initializeContent() {
      mContent = View.inflate(this, R.layout.some_view, null); //i.e. concrete View (e.g. LinearLayout, FrameLayout, GridView, etc.)
   }
}

Pero cuando lo hago mi mContent siendo el mismo que era cuando me la ha definido en MyActivity‘s onCreate().

¿Cómo puedo cambiar la vista del tipo de contenido depende de lo que Activity está en primer plano?

Hola, Si he entendido bien lo que se desea es tener una plantilla con algunos de diseño fijo y algunos dinamyc. Si es así os animo a utilizar Fragmentos.

OriginalEl autor teoREtik | 2012-01-16

2 Comentarios

  1. 7

    Primer cambiar la vista en su diseño principal en una vista de un grupo (por ejemplo, un LinearLayout). A continuación, puede añadir vistas a. Si agrega una vista única, va a tener exactamente el efecto que se desea lograr.

    class OneActivity extends MyActivity {
       @Override
       protected void initializeContent() {
          final ViewGroup viewGroup = (ViewGroup) findViewById(R.id.activity_content);
          viewGroup.addView(View.inflate(this, R.layout.some_view, null)); 
       }
    }

    En su caso el que debe trabajar. Si su vista personalizada de grupo contenía otros puntos de vista desde lo alto de la jerarquía, se puede limpiar antes de la adición de la vista personalizada:

    viewGroup.removeAllViews();

    Funciona, yo hago exactamente que en la mayoría de mis proyectos.

    Una alternativa es buscar en la Fragmentos de la API, disponible para las últimas versiones del SDK.

    Impresionante!!! Muchas gracias)))
    Otro beneficio de usar un ViewGroup es que usted puede modificar su diseño (fondo, anchura/altura, etc.) en un solo lugar, y todos sus subclase actividades serán impactados

    OriginalEl autor Guillaume

  2. 0

    No se puede invalidar la clase de miembros de datos en Java, el uso de métodos de

    OriginalEl autor Mahdi Hijazi

Dejar respuesta

Please enter your comment!
Please enter your name here