来自其他活动的Android调用方法
我读过很多帖子、文章和其他东西,但我找不到解决办法。。 我制作了一个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(
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()?这如何工作??您应该传递实现接口的活动,但该活动不可序列化…这如何工作??您应该传递实现接口的活动,但活动不可序列化。。。