Android 台灣中文網

標題: 跨Activity傳送資料 [打印本頁]

作者: meisyuan8069    時間: 2012-9-26 11:07
標題: 跨Activity傳送資料

如何再第一個Activity按下按鈕後
在第二個Activity的TextView裡顯示出來

作者: ploglin    時間: 2012-9-26 11:53
有很多方式,最直接的方式就是用 Intent 的 putExtra
http://developer.android.com/reference/android/content/Intent.html#putExtra(java.lang.String, android.os.Bundle)
作者: meisyuan8069    時間: 2012-9-26 14:55
ploglin 發表於 2012-9-26 11:53
有很多方式,最直接的方式就是用 Intent 的 putExtra
http://developer.android.com/reference/android/con ...

我只要單純的按下按鈕後
傳送對應文字到下一頁

但是我找了很多參考資料都是傳送數值
那文字的部分是否也可以直接使用
作者: ploglin    時間: 2012-9-26 15:05
文字是可以的,範例如下

  1. int a = 1;
  2. String b = "1";
  3. startActivity(new Intent(this, TargetActivity.class).putExtra("a",a).putExtra("b",b));
複製代碼

  1. // TargetActivity.java
  2. int a = getIntExtra("a", 0);
  3. String b = getStringExtra("b")
複製代碼

作者: meisyuan8069    時間: 2012-9-26 15:41
ploglin 發表於 2012-9-26 15:05
文字是可以的,範例如下

無法直接傳送TextView裡的文字嗎?

因為我試了
但是按下去後都會顯示程式錯誤
作者: ploglin    時間: 2012-9-26 17:08
TextView 的內容就是

  1. TextView tv1 = (TextView) findViewById(R.id.textView1);
  2. String b = tv.getText().toString();
  3. // 接下來的就請參考上個回覆
複製代碼

作者: meisyuan8069    時間: 2012-9-27 11:35
謝謝
成功嘍可以從Activity1傳送到Activity2

那在請問一下如果我在Activity1有兩個按鈕
一個到Activity2 一個到Activity3
按下按鈕後到Activity2的然後資料回傳到Activity1
在按下到Activity3資料再回傳到Activity1

如果我用原本的方法他會告訴我錯誤
是不是還要再加什麼東西呢?
作者: ploglin    時間: 2012-9-27 11:38
你有看 LogCat 嗎?
先看看錯誤訊息,再想想是什麼問題。
如果看不懂,再放上來讓大家幫你看看
作者: meisyuan8069    時間: 2012-9-28 14:04
ploglin 發表於 2012-9-27 11:38
你有看 LogCat 嗎?
先看看錯誤訊息,再想想是什麼問題。
如果看不懂,再放上來讓大家幫你看看 ...

那Activity1
無法一起讀取Activity2和Activity3的資料嗎

我試過用hasExtra但無法一起讀取
作者: 不知火羽    時間: 2012-9-28 18:12
本帖最後由 不知火羽 於 2012-9-28 18:14 編輯
meisyuan8069 發表於 2012-9-28 14:04
那Activity1
無法一起讀取Activity2和Activity3的資料嗎


如果照你的說法是應該是可以辦得到
Activity1 ==(傳值)==>Activity2==(傳值)==>Activity1
Activity1 ==(傳值)==>Activity3==(傳值)==>Activity1
在這裡變成Activity1被開啟時,本身就會先接收Activity2.Activity3的值
1.所以用putExtra就要設定初始值 當Activity1被開啟時還沒從Activity2.Activity3取得資料時 否則會出現Null的錯誤。
2.當你從Activity1開啟Activity2或Activity3的時候沒有把前面傳給Activity1的資料記錄下來或是繼續送給下一個Activity的而關閉Activity1時候 有可能造成傳送前面送的資料遺失。
以上是我猜測的部分

其他的辦法是可以將Activity2.Activity3改成用Dialog這樣就不會有跨Activity傳值的問題
或者是將Activity2.Activity3傳的值暫時丟到Preference 不過就看個人需求

如果有程式錯誤
我猜最大的可能是傳值沒有傳正確或者是Null值造成的




歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1