|
||
|
![]() |
![]() |
Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android |
![]() |
|
Herramientas |
#1
|
||||
|
||||
Llamar un metodo desde otra clase
Debe ser sencillo,pero no acabo de hacerlo funcionar,y mire y mire en stackoverflow pero no encuentro la solucion.
Tengo dos activitys,una de ellas la uso para cargar un drawerlayout,dentro de un metodo desde esa clase tengo el codigo,y quiero llamar ese metodo desde otra activity,otra clase vaya.Os muestro el codigo a ver que os parece,porque solo me da force close y no me da pistas.... Código:
public class Restaurantes_Categorias extends Activity{ private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.restaurantes_categorias); new Navigation_Create(context).Creacion(); } Código:
public class Navigation_Create extends Activity{ private String[] titulos; private DrawerLayout NavDrawerLayout; private ListView NavList; private ArrayList<Items> NavItms; private TypedArray NavIcons; NavigationAdapter NavAdapter; private Context context; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } public Navigation_Create(Context context) { this.context = context; } public void Creacion() { NavDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); NavList = (ListView) findViewById(R.id.lista); View header = getLayoutInflater().inflate(R.layout.header, null); NavList.addHeaderView(header); NavIcons = getResources().obtainTypedArray(R.array.navigation_iconos); titulos = getResources().getStringArray(R.array.nav_options); NavItms = new ArrayList<Items>(); NavItms.add(new Items(titulos[0], NavIcons.getResourceId(0, -1))); NavItms.add(new Items(titulos[1], NavIcons.getResourceId(1, -1))); NavItms.add(new Items(titulos[2], NavIcons.getResourceId(2, -1))); NavItms.add(new Items(titulos[3], NavIcons.getResourceId(3, -1))); NavItms.add(new Items(titulos[4], NavIcons.getResourceId(4, -1))); NavItms.add(new Items(titulos[5], NavIcons.getResourceId(5, -1))); NavAdapter= new NavigationAdapter(this,NavItms); NavList.setAdapter(NavAdapter); NavList.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> arg0,View arg1,int position,long id) { if(position==1) { //AbrirMonumentos(); } if(position==2) { //AbrirAlojamientos(); } if(position==3) { //AbrirRestaurantes(); } } }); |
|
#2
|
||||
|
||||
Mi opinón:
La otra activity no existe hasta que la creas supongo que con un intent así que no puedes llamar a un método de una clase que todavía no existe. Si el método fuera estático es posible que pudieras llamarlo pero no creo que tenga sentido por lo que veo en tu código. Realmente Navigation_Create tiene que ser una activity? no podría ser simplemente una clase? o no podrías reestruturarlo para que simplemente sea una subclase de Restaurantes_Categorias (si es que necesita ser una clase porque todo lo que veo es que crea las categorías y eso puede ser simplemente un método dentro de Restaurante_Categorias). Sin ver más código no sé qué más decirte. Seguro que más gente te dará más pistas que yo. Un saludo. Última edición por oxot Día 04/06/14 a las 16:08:21. |
#3
|
||||
|
||||
Como poder se puede,en un principio tenia todo el codigo en el mismo archivo,pero ando reescribiendo la parte del drawer layout una y otra vez,asi que estoy buscando la forma de pasarlo a un solo archivo y llamar desde el resto a este,menos codigo y mas ordenado...
Si no encuentro la solucion lo dejare asi,ya es por aprender algo nuevo vamos.... La idea es lo que dices,una clase "auxiliar" para llamarla desde las otras actividades. Seguire investigando ,a ver si me dais ideas. Gracias oxot! |
#4
|
||||
|
||||
Es que entiendo que la estructura del layout de cada clase tiene que estar en su clase. Puedes crearlo como una subclase independiente o como un método dentro de la clase, pero ponerlo a parte no lo veo.
Ahora bien, si te entiendo bien, como este Drawer Layout es común para varias activities, pues yo lo que haría sería poner los métodos comunes en esta clase (que hereda de activity) y en tus clases, en vez de heredar de Activity, los haría heredar de esta clase Drawer_Layout_Actiivty. Así tendrías todos sus métodos disponibles en todos los que hereden de ella. Algo parecido a lo que comentamos aquí: http://www.htcmania.com/showpost.php...12&postcount=4 Un saludo |
#5
|
||||
|
||||
Muchas gracias oxot!! Con lo que me has dicho entiendo mejor como hacerlo,voy a ello.
|
![]() |
![]() |
||||||
|