2011-10-24 11 views
10

Chcę uruchomić jedną z moich istniejących działań i zmusić działanie do wywołania konkretnej metody po jej rozpoczęciu.Android New Intent start konkretnej metody

Czy to możliwe?

Czy mogę zdefiniować metodę, która powinna zostać wywołana po utworzeniu działania w moim intencji?

Na przykład coś takiego:

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

potrzeba więcej opisu. –

+0

Utwórz działanie, uruchom je z zamiarem. http://goo.gl/tWsyM – user999717

+0

Dodałem więcej informacji. Może używam niewłaściwej terminologii. Przechodzę od jednej czynności do drugiej używając intencji. Czy to jest poprawne? – Somk

Odpowiedz

0

myślę Poniższy link pomoże. switching between activities

+0

Dzięki. Rozumiem, jak przełączać się między działaniami, zastanawiam się tylko, czy możesz kierować określoną metodę, gdy celujesz w działanie. – Somk

+0

Lukap odpowiedział na to pytanie i uważam, że jest to obejście tego, o co prosiłeś. –

16

Nie, nie sądzę, że możesz mieć coś takiego. Intencja intencji = nowa intencja (this, com.app.max.Home.class.method);

ale można to zrobić

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

a następnie w nazwie działalności (gdzie trzeba zacząć metody) może mieć intencję i zdecydować, która metoda zadzwonić

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

Próbowałem tego, jak: '' '@Override chronione void onNewIntent (intent intent) { super.onNewIntent (zamiar); jeśli (zamiar.getStringExtra ("methodName"). equals ("drawOnJupiter")) { this.drawView.drawOnJupiter(); } } '' ' bez powodzenia – kinghenry14

+0

Nie wywołuje onNewIntent(). ale zaczyna się aktywność. – Imeshke

+0

@Imeshke W tym samym numerze, czy znalazłeś poprawkę? –

0

rozwiązać ten problem, używając onCreate zamiast onNewIntent.

aktywny A:

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

com.app.max.Home aktywny:

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! 
      } 
     } 
    } 

Nadzieja rozwiązanie to rozwiązać Twój problem

0

ty pytanie wydaje się interesująca, ale nie ma sposobu, możesz to zrobić za pomocą Intent. Musisz zrozumieć, że po uruchomieniu działania przechodzi on cykl życia, który jest: onCreate() ->onStart() - >OnResume(). Więc co można zrobić, to uruchomić tę metodę od onResume() tak:

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

Po prostu staram się pomóc, dać mi trochę więcej informacji na temat problemu, czy takie podejście nie rozwiązuje problemu.

Powiązane problemy