2012-08-02 17 views

Respuesta

6

Si declara el método onCreateOptionMenu, que es donde coloca los elementos en la barra de acciones, en su actividad principal (A), todas las demás actividades que extienden A sin volver a declarar ese método tendrán la misma barra de acciones de A.

+0

Esto es casi problemático si extendemos con A entonces no podemos extenderlo con otra clase. – swapyonubuntu

0

Se puede utilizar el mismo patrón de aplicación (herencia/composición) he descrito aquí

Global "search function" in whole app

para la funcionalidad de búsqueda. Simplemente haz lo que describí allí con el método onCreateOptionMenu para tener el mismo para todas las actividades sin necesidad de escribir las mismas tres aburridas líneas de código en cada actividad.

3

Las opciones de menú de Android proporcionan al usuario acciones y otras opciones para elegir desde la barra de acciones de la pantalla. Algunas de estas acciones son comunes a todas las actividades de su aplicación, por lo que en lugar de crearlas en cada una de sus actividades, puede crear una BaseActivity que amplíe la clase Activity y haga todo el procesamiento de su menú. Luego puede extender la clase de actividad base en las actividades de su aplicación para obtener las mismas opciones de menú.

import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class MainActivity extends BaseActivity implements OnClickListener{ 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Button nextActivity = (Button) findViewById(R.id.nextActivity); 
     nextActivity.setOnClickListener(this); 

    } 
} 

Aquí es BaseActivity Clase

import android.app.Activity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.Toast; 

public class BaseActivity extends Activity{ 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.common_menu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 

    // Do Code Here 

    default: 
    return super.onOptionsItemSelected(item); 
    } 

} 

} 

espero que le ayuda.

Cuestiones relacionadas