2013-05-20 30 views
1

我已经阅读了一堆帖子,文章和一切,但我无法得到解决方案.. 我做了一个Android应用程序.. 我开始第一个活动(第一类)。然后我对第二个活动的按钮,我加载它是这样的:来自其他活动的Android调用方法

firstactivity f1= new firstactivity(); 
f1.MyMethod("my string goes here") 

Intent i=new Intent(firstactivity.this,secondactivity.class); 
startActivity(i); 
在点击事件按钮我想打电话从第一个活动一个方法的第二个活动

当我运行这个应用程序崩溃..我试图赶上exeption和我打印exeption这是一个错误为null ...我不能得到它的工作.....

在此先感谢!

PS有什么办法可以在第一个活动的布局中启动第二个活动并更新一些值(在textview中)吗?不是只在加载时更新它,而是在第二个活动和每个活动中都有一个计时器5秒在第一活动..任何解决方案的布局的setText到一个TextView(非此即彼我问大约高于法),将不胜感激

+0

我建议看一下开始第二个活动时用extras调用'i.putExtra()'并且你可以传入值来访问你刚刚用getIntent()开始的活动getExtras()' – Eluvatar

回答

1

尝试使用意图活性

要么经由之间进行通信onNewIntent:

@Override 
protected void onNewIntent(Intent intent) { 
    setIntent(intent); 
    handleIntent(intent); 
} 

private void handleIntent(Intent intent) { 
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 
     String query = intent.getStringExtra(SearchManager.QUERY); 
     if (query == null) { 
      query = intent.getData().toString(); 
     } 
     doMySearch(query); 
    } 
} 

或使用监听器。

class ActivityA implements Activity { 

    // Nested 'listener' 
    protected class TitleBarListener extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equals(NEW_TITLE_INTENT)) 
      { 
       intent.getStringExtra(NEW_TITLE_TEXT_VALUE)); 
      } 
     } 
    } 

    TitleBarListener mListener; 

    // then create and register 
    mListener = new TitleBarListener(); 
    registerReceiver(mListener, new IntentFilter(NEW_TITLE_INTENT)); 

一定的意图添加到android.xml

<intent-filter> 
    <action android:name="android.intent.action.SEARCH"/> 
    <action android:name="com.mypackage.changeTitle"/> 
</intent-filter> 

,那么你应该能够播放/发送意图到活动

Intent i = new Intent(AccountMainView.NEW_TITLE_INTENT); 
    getActivity().sendBroadcast(i); 


    // or if you activity is singleTop and you're using the onNewIntent: 
    Intent i=new Intent(this,MainActivity.class); 
    i.putExtra("methodName","Mymethod");//goes to previous Intent 
    startActivity(i);//will trigger only Mymethod in MainActivity 
+0

hi ,非常感谢你。请你向我解释这是如何工作的?再次感谢 PS PS如何将数据返回给一个? – Chris

+0

嗨again.so如果我使用“或”(听众),我会修复代码到我的第一个活动..第二个活动,我会把代码 意图我=新的意图(这,MainActivity。类); (); //去上一个INtent startActivity(i); //只会触发MainActivity中的Mymethod 这将调用MyMethod()的第一个activity? – Chris

0

我觉得你的方法不好。你想在第一个Activity中运行什么样的方法?如果你的Activity目前没有被用户使用,那么这样做有什么意义?

你应该做的就是定义你的行动作为第一ActivityonResume()方法的一部分,并把他们的方法/ s的要运行,以下只是PAS从你BundleExtraActivity到首先确定应该采取什么行动。

+0

嗨。第一项活动打开蓝牙并连接到其他蓝牙设备,并将命令发送至连接的设备。 第二活性/类是用于获取倾斜数据(电话轴值)和其像这样: 公共类二等延伸活动实现SensorEventListener ............ 因此第二类我想要发送到第一类的事件的电话是倾斜(其完成)的3轴的数据... – Chris

0

创建一个接口,在第一个活动中实现该接口,然后从第二个活动调用实例化的方法。

在开始第二个活动时,您可以在意图中传递实例化的接口对象。

+0

这怎么能工作?您应该传递实现接口的Activity,但Activity不是Serializable ... –