2011-10-24 33 views
10

我想启动一个现有活动并强制活动在启动后调用特定的方法。Android新意图启动特定方法

这可能吗?

我可以在我的Intent中创建活动后定义一个应该调用的方法吗?

例如像:

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

需要更多描述。 –

+0

创建一个活动,并以意图启动它。 http://goo.gl/tWsyM – user999717

+0

我已添加更多信息。也许我正在使用错误的术语。我正在使用意图从一个活动转到另一个活动。那是对的吗? – Somk

回答

0

我觉得下面的链接会帮助你。 switching between activities

+0

谢谢。我了解如何在活动之间进行切换,我只是想知道在您定位活动时是否可以针对特定的方法。 – Somk

+0

Lukap已经回答了它,我相信这是你所问的解决方法。 – 2011-10-24 14:04:02

16

不,我不认为你可以有这样的事情 Intent intent = new Intent(this,com.app.max.Home.class.method);

,但你可以做到这一点

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

,然后在所谓的活动(你需要启动方法)可以采取的意图,并决定调用哪个方法

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

我试过这个,例如: '''@Override protected void onNewIntent(意图意图){ super.onNewIntent(intent); if(intent。getStringExtra(“methodName”)。equals(“drawOnJupiter”)){ this.drawView.drawOnJupiter(); } }''' 没有运气 – kinghenry14

+0

它没有调用onNewIntent()。但活动开始。 – Imeshke

+0

@Imeshke在这里同样的问题,你找到一个修复它? –

0

我解决此问题通过使用onCreate而不是onNewIntent

活动答:

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

com.app.max.Home活动:

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

希望这个解决方案解决您的问题

0

你问题似乎有趣,但也没办法你可以使用Intent。你必须明白,当你开始一项活动时,它会经历一个生命周期:onCreate() - >onStart() - >OnResume()。所以你可以做的是从onResume()这样的启动方法:

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

我只是想帮忙,给我你的问题的一些详细信息,如果这种方法没有解决您的问题。