Android 一個Activity呼叫另一個Activity中的公有方法
阿新 • • 發佈:2019-02-16
問題描述:
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完美實現