這個問題很簡單。 例如有2項活動主要活動和主要活動2. 如何從主要活動向主要活動2發送字符串(例如) 假設主要活動2獲得字符串。它調用一個函數來更改該字符串。 然後如何將修改後的字符串發送回主活動?在活動之間發送變量
回答
從主要活動1發送字符串:
Intent intent = new Intent(this, MainActivity2);
intent.putExtra("string", stringVal);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
然後在主要活動中2,得到的字符串:
String str = getIntent().getExtras().getString("string");
然後,只需更改值,並將其發送回主要活動1,如果需要,您可以在onResume中獲得意圖,但檢查是否存在空值。
因此,當主活動2收到該字符串並對其進行一些更改時。我可以通過使用上面編寫的類似代碼將它發回主活動活動,只需將MainActivity2更改爲MainActivty並更改putExtra()的值? – Nikola
正確,試一試 –
這有效,但它並不安靜,我正在尋找。我的問題不夠具體,併爲此感到遺憾。其實我想要的是留在主要活動的佈局頁面,而不是主要活動2發送字符串到主要活動2,它的佈局彈出在我的設備上。長話短說,主要活動2接收字符串和設備始終停留在主要活動佈局。主要活動2更改字符串(假設只替換2個字母),並將字符串發回主活動,我可以實際看到更改(例如,在文本視圖中)。 – Nikola
的標準方式:
如果你想從活動1發送原始數據,以活性2,您需要使用Intent
。例如,如果你只是想發送一個字符串:
public class Activity1 extends Activity {
public static final String EXTRA_STRING = "extra_string";
private void sendString(String s) {
Intent intent = new Intent(this, Activity2.class);
intent.putExtra(EXTRA_STRING, s);
startActivity(intent);
}
}
假設你改變活性2該字符串,也希望結果返回到活動1,你需要在Activty2使用的活性1 startActivityForResult()
和setResult()
。
例如:
public class Activity1 extends Activity {
public static final String EXTRA_STRING = "extra_string";
private static final int REQUEST_CODE = 1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
// Get the string back
String changedString = data.getStringExtra(Activity2.EXTRA_STRING);
}
}
private void sendString(String s) {
Intent intent = new Intent(this, Activity2.class);
intent.putExtra(EXTRA_STRING, s);
startActivityForResult(intent, REQUEST_CODE);
}
}
在活性2:
public class Activity2 extends Activity {
public static final String EXTRA_STRING = "string_extra";
private String myString;
@Override
public void onCreate(Bundle bundle) {
// receive the string from activity1
if (getIntent() != null) {
myString = getIntent().getStringExtra(Activity1.EXTRA_STRING);
}
}
// Send the string back to activity1
private void sendBack() {
Intent data = new Intent();
data.putExtra(EXTRA_STRING, myString);
setResult(RESULT_OK, data);
finish();
}
}
該方法的缺點是隻能發送原語的變量。如果要發送對象,則必須執行Parcelable
或Serializable
。
的快速簡便的方法:
您可以發送任何類型的變量,活動,服務或任何你想使用EventBus之間的任何複雜的對象。請查看Documentation瞭解如何使用它。它非常快速和簡單。
- 1. 如何在Android上的活動之間發送意圖變量?
- 2. 使用自定義變量在活動之間發送數據
- 3. Android在活動之間發送數據
- 4. 在活動之間發送對象
- 5. Android在活動之間傳遞變量
- 6. 在活動和片段之間發送變量以管理後退按鈕
- 7. 的Java:類之間發送變量
- 8. 在活動之間發送數據時發生崩潰
- 9. 發送動作之間的變量調用
- 10. 在活動之間傳遞「偏好變量」,在原始活動中設置值
- 11. 如何通過路徑在活動之間發送圖像android
- 12. 在活動之間發送ArrayList <float[]>(android)
- 13. 在活動之間發送一個布爾值
- 14. 如何在活動之間發送電話號碼?
- 15. 如何在不同活動的片段之間發送數據
- 16. 如何在選項卡之間作爲活動發送數據?
- 17. 在我的應用內的活動之間發送數據?
- 18. 在兩項活動之間發送數據Android Studio
- 19. 在活動之間發送節點列表
- 20. Android使用Parcelable在活動之間發送數據
- 21. 錯誤在活動之間發送位圖android
- 22. 在窗體之間切換並正確發送變量
- 23. 如何在線程之間發送變量/信息
- 24. 使用url在jsp頁面之間發送變量
- 25. 如何在Capistrano和Rails之間發送變量?
- 26. 如何在兩個C程序之間發送變量
- 27. 如何在工作表和書籍之間發送變量?
- 28. 如何在Chrome擴展中的函數之間發送變量?
- 29. 在類和活動之間共享變量
- 30. 如何在2個活動之間傳遞變量?
您將其作爲結果意圖的一部分返回 –