Foro de elhacker.net

Programación => Java => Mensaje iniciado por: braulio-- en 4 Diciembre 2010, 17:06 pm



Título: [Android][duda] Llamar a tu propia activity
Publicado por: braulio-- en 4 Diciembre 2010, 17:06 pm
Bueno, estoy programando una app para android y me están saliendo algunos problemas.

Tengo la actividad principal que se llama Alfffa_Chart que es así:
Código
  1. package alfffa.Chart;
  2.  
  3.  
  4.  
  5. import android.app.Activity;
  6. import android.content.Intent;
  7. import android.os.Bundle;
  8. import android.util.Log;
  9. import android.view.Menu;
  10. import android.view.MenuItem;
  11.  
  12.  
  13.  
  14. public class Alfffa_Chart extends Activity {
  15.  
  16. /** Called when the activity is first created. */
  17. @Override
  18. public void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21.  
  22. }
  23. public boolean onCreateOptionsMenu(Menu mimenu)
  24. {
  25. super.onCreateOptionsMenu(mimenu);
  26. mimenu.add(0,0, 0, "Hola, llama a mi otra activity");
  27. return true;
  28. }
  29. public boolean onMenuItemSelected(int featuredId, MenuItem item)
  30. {
  31. try
  32. {
  33. super.onMenuItemSelected(featuredId, item);
  34.  
  35. switch(item.getItemId()){
  36. case 0:
  37. menu();
  38. break;
  39. }
  40. return true;
  41. }
  42. catch (Exception e)
  43. {
  44. Log.d("ASADFASD",e.toString());
  45. return false;
  46. }
  47. }
  48.  
  49. private void menu()
  50. {
  51. try
  52. {
  53.        Intent intento = new Intent();
  54.        intento.setClassName(this, "alfffa.Chart.Menu1");
  55. startActivity(intento);
  56. }
  57. catch (Exception e)
  58. {
  59. Log.d("ASDFASDFAErrore",e.toString());
  60. }
  61. }
  62.  

Y luego tengo la clase Menu1 que es así:
Código
  1. package alfffa.Chart;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5.  
  6. public class Menu1 extends Activity {
  7.  
  8. /** Called when the activity is first created. */
  9. @Override
  10. public void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.menu1);
  13.  
  14. }
  15. }
  16.  
Y aquí la porción del android_manifest en la que hay que poner las actividades :
Código
  1. <activity android:name=".Alfffa_Chart"
  2.                  android:label="@string/app_name">
  3.            <intent-filter>
  4.                <action android:name="android.intent.action.MAIN" />
  5.                <category android:name="android.intent.category.LAUNCHER" />
  6.            </intent-filter>
  7.        </activity>
  8.       <activity android:name="alfffa.Chart.Menu1"
  9.                  android:label="Menu1" >
  10.            <intent-filter>
  11.                <action android:name="android.intent.action.MENU1" />
  12.                <category android:name="android.intent.category.DEFAULT"/>
  13.            </intent-filter>
  14.        </activity>
  15.  

Es decir, la actividad principal tiene un menú con un elemento y ese elemento se encarga de cargar una actividad llamada Menu1. El error está en que cuando hago click sobre ese elemento me da error y la aplicación tiene que cerrarse. Una cosa extraña es que no me caza ninguna excepción.

¿Alguien sabe qué es lo que estoy haciendo mal ?

Aclaro que el layout menu1 existe y está bien escrito.


Título: Re: [Android][duda] Llamar a tu propia activity
Publicado por: Casidiablo en 4 Diciembre 2010, 20:33 pm
Hola Braulio.

Haces las cosas más complicadas de lo que deben ser. Para llamar a tu actividad solo has:

Código:
Intent intento = new Intent(this, Menu1.class);
startActivity(intento);

Además, quita las cosas que pusisten dentro de la actividad en el manifest. Así está bien:

Código:
<activity android:name="alfffa.Chart.Menu1" android:label="Menu1"> 
</activity>

¿Cómo estás intentando capturar las excepciones? ¿Estás usando el logcat?


Título: Re: [Android][duda] Llamar a tu propia activity
Publicado por: braulio-- en 4 Diciembre 2010, 21:55 pm
Perfecto, ya me funciona, muchisimas gracias.