Re: [問題] 兩個Activity溝通

看板AndroidDev作者 (λ)時間9年前 (2016/12/20 22:16), 編輯推噓2(2022)
留言24則, 5人參與, 最新討論串2/2 (看更多)
※ 引述《magic704226 (梅姬?沒雞?傻傻分不清楚)》之銘言: : 目前有兩個Activity : A1 startActivity A2 後 : 還有資料要從 A1 -> A2 : 目前是用broadcast : 有沒有比較快的方法? : 除了Android IPC binder實做? Activity互相溝通可以透過以下方法 1. Intent Intent intent = new Intent(); Bundle bundle = new Bundle(); bundle.putString("key", "value"); intent.putExtras(bundle); intent.setClass(A.this, B.class); startActivity(intent); 2. Broadcast registerReceiver(mBroadcast, new IntentFilter(MY_MESSAGE)); Intent intent = new Intent(); intent.setAction(MY_MESSAGE); sendBroadcast(intent); 3. Listener public interface OnEventCompletedListener{ void onCompleted(String result); } public void setOnEventCompletedListener(OnEventCompletedListener listener){ mOnEventCompletedListener = listener; } private OnEventCompletedListener mOnEventCompletedListener; public void notifyData(String result){ if(mOnEventCompletedListener != null){ mOnEventCompletedListener.onCompleted(result); } } 4. Application public class MyApplication extends Application{ private String str; public String getStr() { return str; } public void setStr(String str) { this.str = str; } } public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ((MyApplication)getApplication()).getStr(); } } 5. singleton public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton getInstance() { return instance; } } 6. EventBus A Activity MyEvent event = new MyEvent(); event.setMyEventString(editText.getText().toString()); mEventBus.post(event); B Activity public void onEventMainThread(MyEvent event){ event.getMyEventString(); } 靠印象打的 沒有編譯過 應該會有錯 大guy4這幾個方法 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.149.7 ※ 文章網址: https://www.ptt.cc/bbs/AndroidDev/M.1482243371.A.915.html

12/21 09:13, , 1F
listener還是要傳listener物件的參考,沒有解決問題吧
12/21 09:13, 1F

12/21 09:17, , 2F
另外後三個方法限同個app(process),前兩個同樣是Intent有
12/21 09:17, 2F

12/21 09:17, , 3F
資料大小限制
12/21 09:17, 3F

12/21 11:16, , 4F
listener傳遞物件有什麼問題?@@
12/21 11:16, 4F

12/21 11:16, , 5F
activity傳到activity是同app 沒錯 原文有要跨行程?
12/21 11:16, 5F

12/21 11:16, , 6F
intent有大小限制也沒錯 原文有限定大小?
12/21 11:16, 6F

12/21 13:09, , 7F
原文也沒說沒有啊,acitivity怎麼不能傳別的app的activity?
12/21 13:09, 7F

12/21 13:10, , 8F
listener傳遞物件,假設a b兩個activity好了,要先呼叫b的
12/21 13:10, 8F

12/21 13:11, , 9F
setListener,這時候a要怎麼把listener這物件傳給b?
12/21 13:11, 9F

12/21 13:11, , 10F
不就又回到一開始要怎麼把物件從a傳到b的問題
12/21 13:11, 10F

12/21 16:51, , 11F
原文不是說要startactivity
12/21 16:51, 11F

12/21 16:51, , 12F
為什麼要解讀成跨行程@@?
12/21 16:51, 12F

12/21 16:51, , 13F
listener可以搭配singleton來完成 也可以做成全域方法
12/21 16:51, 13F

12/21 16:51, , 14F
很多種阿XD
12/21 16:51, 14F

12/21 21:04, , 15F
那不就是要搭配別種方法,就不算這個問題的解法啊
12/21 21:04, 15F

12/21 21:06, , 16F
有辦法傳listener物件,就有辦法直接傳要傳的東西
12/21 21:06, 16F

12/21 21:07, , 17F
startactivity可以start別的app的acitivty啊
12/21 21:07, 17F

12/21 21:07, , 18F
原po還提到了IPC binder,我才覺得怎麼能解讀成一定不是IPC
12/21 21:07, 18F

12/21 21:10, , 19F
不要說別的app,同app的acitivity也能開在不同process
12/21 21:10, 19F

12/21 21:23, , 20F
也不是說那些方法不對(除了listener外),只是提些限制而已
12/21 21:23, 20F

12/22 15:09, , 21F
感謝兩位都是幫小弟解決問題,目前僅限於同一個
12/22 15:09, 21F

12/22 15:09, , 22F
package,我沒說清楚,是我的疏忽
12/22 15:09, 22F

12/26 14:26, , 23F
另外要互傳其實用service會不會簡單一點.....
12/26 14:26, 23F

12/31 07:14, , 24F
推,也推釐清
12/31 07:14, 24F
文章代碼(AID): #1OMJqhaL (AndroidDev)
討論串 (同標題文章)
文章代碼(AID): #1OMJqhaL (AndroidDev)