1. 程式人生 > >Android 一個Activity呼叫另一個Activity中的公有方法

Android 一個Activity呼叫另一個Activity中的公有方法

問題描述:

Activity A

A中有一個TextView控制元件  ,一個Button控制元件,點選Button控制元件啟用Activity  B,還有一個公有方法c ,c 傳入一個String引數s 將s 顯示到TextView上

Activity B
一個EditView控制元件 一個確定Button,點選Button跳轉到A並將EditView輸入的內容顯示到TextView控制元件上

開始時,思路

在B中Button的setOnClickListener方法中 {stratActivity(new Intent(getApplicationContext,A.class)) }  接著new A() 呼叫A的公有方法c 

結果:返回了A介面,但無資訊顯示

報告空指標異常

考慮到啟用B時的A和new的A的例項物件不一致,修改A的啟動模式為singleTask,通過列印測試發現例項物件是一樣的

結果:返回了A介面,但無資訊顯示

但還是報告空指標異常

於是在A中的c方法中列印TextView的例項物件,發現TextView為空(ps:c中呼叫了TextView的setText方法)

疑問一:為什麼為空?

發現c中的TextView為空,於是在c中例項化TextView,呼叫findViewById

又報空指標異常

看列印的異常資訊,TextView成功例項化,空指標與findViewId有關  ???????????

更奇怪的是啟用B的A和由B回顯的A兩個例項物件竟然不一致

思考良久,不得其解

最後使用Aativity中的startActivityForResult和onActivityResult完美實現