2011-10-24 9 views
10

Desidero avviare una delle mie attività esistenti e forzare l'attività a richiamare un metodo specifico dopo l'avvio.Metodo nuovo inizio Android Inizia particolare

È possibile?

Posso definire un metodo che dovrebbe essere chiamato dopo aver creato l'attività all'interno del mio intent?

Per esempio qualcosa come:

Intent intent = new Intent(this, com.app.max.Home.class.myMethod); 
+3

altra descrizione necessaria. –

+0

Creare un'attività, avviarla con un intento. http://goo.gl/tWsyM – user999717

+0

Ho aggiunto più informazioni. Forse sto usando la terminologia sbagliata. Sto passando da un'attività all'altra usando gli intenti. È corretto? – Somk

risposta

0

penso che il seguente link vi aiuterà. switching between activities

+0

Grazie. Capisco come passare da un'attività all'altra, mi chiedo solo se è possibile indirizzare un metodo particolare quando si targetizza l'attività. – Somk

+0

Lukap ha risposto e credo che sia una soluzione per quello che hai chiesto. –

16

No, non credo che si può avere qualcosa di simile Intent intento = new Intent (questo, com.app.max.Home.class.method);

ma si può fare questo

Intent intent = new Intent(this, com.app.max.Home.class); 
intent.putExtra("methodName","myMethod"); 
startActivity(intent); 

e poi nell'attività chiamato (in cui è necessario avviare il metodo) può prendere l'intento e decidere quale metodo da chiamare

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    if(intent.getStringExtra("methodName").equals("myMethod")){ 
     mymethod(); 
    } 
} 
+1

ho provato questo, come: '' '@Override protetto non valido onNewIntent (Intento intenzionale) { super.onNewIntent (intento); se (intento.getStringExtra ("methodName"). equals ("drawOnJupiter")) { this.drawView.drawOnJupiter(); } } '' ' senza fortuna – kinghenry14

+0

Non chiama su NewIntent(). ma l'attività inizia. – Imeshke

+0

@Imeshke Lo stesso problema qui, hai trovato una soluzione per questo? –

0

Risolvo questo problema utilizzando onCreate anziché onNewIntent.

Attività A:

Intent intent = new Intent(this, com.app.max.Home.class); 
intent.putExtra("methodName","myMethod"); 
startActivity(intent); 

com.app.max.Home attività:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.home); 

    if(savedInstanceState == null) 
    { 
     Bundle extras = getIntent().getExtras(); 
     if (extras == null) 
     { 
      //Extra bundle is null 
     }else{ 
      String method = extras.getString("methodName"); 

      if (method.equals("myMethod")) 
      { 
       //Call method here! 
      } 
     } 
    } 

Speranza questa soluzione risolve il problema

0

È questione sembra interessante, ma non c'è modo puoi farlo usando Intent. Devi capire che quando inizi un'attività, passa attraverso un ciclo di vita che è: onCreate() ->onStart() - >OnResume(). Che cosa si può fare è iniziare che il metodo da onResume() come questo:

@Override 
protected void onResume() { 
    super.onResume(); 
    myMethod();//start your method from here 
} 

Sto solo cercando di aiutare, darmi qualche informazione in più sul problema se questo approccio non risolve il problema.

Problemi correlati