来自其他活动的Android调用方法

来自其他活动的Android调用方法,android,android-layout,android-activity,Android,Android Layout,Android Activity,我读过很多帖子、文章和其他东西,但我找不到解决办法。。 我制作了一个android应用程序。。 我开始第一个活动(第一节课)。然后我有一个按钮用于第二个活动,我加载它如下: Intent i=new Intent(firstactivity.this,secondactivity.class); startActivity(i); 在第二个活动中,单击按钮事件,我想从第一个活动调用一个方法: firstactivity f1= new firstactivity(); f1.MyMethod(

我读过很多帖子、文章和其他东西,但我找不到解决办法。。 我制作了一个android应用程序。。 我开始第一个活动(第一节课)。然后我有一个按钮用于第二个活动,我加载它如下:

Intent i=new Intent(firstactivity.this,secondactivity.class);
startActivity(i);
在第二个活动中,单击按钮事件,我想从第一个活动调用一个方法:

firstactivity f1= new firstactivity();
f1.MyMethod("my string goes here")
当我运行这个程序时,应用程序崩溃了。我尝试了try-catch-exeption并打印到exeption,这是null的一个错误。。。我不能让它工作

提前谢谢


PS是否有办法启动第二个活动并更新第一个活动布局中的某些值(在文本视图中)?不仅要在加载时更新,还要在第二个活动中设置计时器,并每隔5秒将文本设置为第一个活动布局中的文本视图。。任何解决方案(无论是这一方案还是我在上面询问的关于该方法的方案)都将非常感谢

尝试使用意图在活动之间进行沟通

通过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>

尝试使用意图在活动之间进行沟通

通过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>

我认为你的方法不好。您希望在第一个
活动中运行哪种方法?如果用户目前没有使用您的
活动
,那么这样做有什么意义


您应该做的是将您的操作定义为第一个
活动的
onResume()
方法的一部分,并将它们放在您想要运行的方法中,接下来,只需将第二个
活动的
捆绑包
额外的
传递给第一个活动,以确定应该采取什么行动。

我认为你的方法不好。您希望在第一个
活动中运行哪种方法?如果用户目前没有使用您的
活动
,那么这样做有什么意义


您应该做的是将您的操作定义为第一个
活动的
onResume()
方法的一部分,并将它们放在您想要运行的方法中,接下来,只需将第二个
活动中的
捆绑包
额外的
传递给第一个活动,以确定应采取的操作。

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


启动第二个活动时,可以在intent中传递实例化的接口对象。

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


启动第二个活动时,您可以在intent中传递实例化的接口对象。

我建议您使用extras启动第二个活动,调用
I.putExtra()
,您可以在刚刚启动的
getIntent().getExtras()活动中传递值以访问
我建议您考虑使用extras启动第二个活动,调用
I.putExtra()
,您可以在刚刚开始使用
getIntent().getExtras()的活动中传入值以访问。第一个活动打开bluetooth并连接到另一个bluetooth设备,并向连接的设备发送命令。第二个活动/类用于获取倾斜数据(电话轴值),如下所示:公共类第二个类扩展活动实现SensorEventListener。。。。。。。。。。。。所以我想发送给第一类关于手机事件的第二类是倾斜(完成)3轴的数据…嗨。第一个活动打开bluetooth并连接到另一个bluetooth设备,并向连接的设备发送命令。第二个活动/类用于获取倾斜数据(电话轴值),如下所示:公共类第二个类扩展活动实现SensorEventListener。。。。。。。。。。。。因此,在手机事件中,我想发送给第一个类的第二个类是倾斜(完成)3轴的数据…您好,非常感谢。您能向我解释一下这是如何工作的吗?再次感谢PS activityb如何将数据返回到a?再次hi。因此,如果我使用“或”(侦听器),我将修复我的第一个活动的代码。。对于第二个活动,我将输入代码Intent i=newintent(this,MainActivity.class);i、 putExtra(“方法名”、“我的方法”)//转到先前的意图startActivity(i)//将只触发MainActivity中的Mymethod,这将调用第一个activity的Mymethod()?您好,非常感谢。请您向我解释一下这是如何工作的?再次感谢PS activityb如何将数据返回到a?再次感谢。因此,如果我使用“或”(侦听器),我将修复第一个activity的代码。。对于第二个活动,我将输入代码Intent i=newintent(this,MainActivity.class);i、 putExtra(“方法名”、“我的方法”)//转到先前的意图startActivity(i)//将只触发MainActivity中的Mymethod,这将调用第一个活动的Mymethod()?这如何工作??您应该传递实现接口的活动,但该活动不可序列化…这如何工作??您应该传递实现接口的活动,但活动不可序列化。。。