我已经阅读了很多帖子,文章和一切,但我无法得到解决方案.. 我做了一个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有没有办法在第一个活动的布局中启动第二个活动并更新一些值(在textview中)?不仅在加载时更新它,而且还有一个计时器,例如在第二个活动中,每5个秒settext到第一个活动布局中的textview ..任何解决方案(无论是这个还是上面提到的关于方法的内容)都将不胜感激
答案 0 :(得分: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
答案 1 :(得分:0)
我认为你的做法并不好。你想在第一个Activity
中运行什么样的方法?如果您的Activity
目前尚未被用户使用,那么这样做有什么意义?
您应该做的是将您的操作定义为第一个onResume()
的{{1}}方法的一部分,然后放置您想要运行的方法,然后只需{{1}或者Activity
从你的第二个Bundle
到第一个{...}来确定应该采取什么行动。
答案 2 :(得分:0)
创建一个接口,在第一个活动中实现该接口,然后从第二个活动中调用instanciated方法。
您可以在启动第二个活动时在intent中传递实例化的接口对象。