什麼是Android應用程序中的bundle
?何時使用它?什麼是Android應用程序中的「包」
回答
Bundles通常用於在各種Android活動之間傳遞數據。它取決於你想要傳遞什麼類型的值,但bundle可以保存所有類型的值並將它們傳遞給新的活動。
您可以使用它像這樣:
Intent intent = new...
Intent(getApplicationContext(), SecondActivity.class);
intent.putExtra("myKey", AnyValue);
startActivity(intent);
您可以通過執行獲得傳遞的值:
Bundle extras = intent.getExtras();
String tmp = extras.getString("myKey");
你可以找到更多的信息:
Bundle用於在活動之間傳遞數據。您可以創建一個捆綁包,將其傳遞給Intent,以啓動可從目標活動使用的活動。
Bundles可以用於通過Intents將任意數據從一個活動發送到另一個活動。當您廣播一個意圖時,感興趣的活動(和其他BroadcastRecievers)將被通知。一個意圖可以包含一個Bundle,以便您可以發送額外的數據以及Intent。
Bundle是鍵值映射,所以它們就像一個Hash,但它們並不嚴格侷限於單個String/Foo對象映射。請注意,只有某些數據類型被視爲「Parcelable」,並且它們在Bundle API中明確拼寫出來。
這是迄今爲止真正解決OP問題的唯一答案,即什麼是捆綁。 http://stackoverflow.com/a/6236801/1588163提供更多見解。 – clapas 2014-10-03 10:55:05
爲什麼要使用一個包,如果我們只能使用映射?謝謝! – 2016-01-28 01:37:32
@RuchirBaronia沒有什麼特別的理由要使用Bundle,除非你打算把它傳遞給需要Bundle對象的Android API的一部分。 – scriptocalypse 2016-01-28 01:46:43
A Bundle
非常類似於將String
鍵映射到值的Java對象Map
。它用於在活動和其他應用程序組件之間傳遞信息。它也被框架用來捕獲和恢復狀態信息。
Android不使用普通舊Map
對象的原因是Map
太靈活;它可以包含無法序列化的對象(比如說,I/O流)。 Bundle
API限制了可以添加到捆綁包的對象的類型,使捆綁的內容保證可序列化。 Android框架依賴於這個屬性。
我建議您閱讀關於Application Fundamentals的文檔。除此之外,這解釋了捆綁和意圖是什麼以及它們用於什麼。
爲什麼使用一個包,如果我們只能使用映射?謝謝泰德! – 2016-01-28 01:37:25
我要補充的是束通過活動用於將數據傳遞給自己的未來。
當屏幕旋轉或者其他活動啓動時,方法protected void onSaveInstanceState(Bundle outState)
被調用,並且活動被破壞。稍後,創建另一個活動實例,並調用public void onCreate(Bundle savedInstanceState)
。當創建第一個活動實例時,該包爲空;如果該捆綁包不爲空,該活動繼續其前任開始的一些業務。
Android會自動將文本保存在文本字段中,但它不會保存所有內容,並且有時會出現細微的錯誤。
雖然最常見的反模式是假設onCreate()
只是初始化。這是錯誤的,因爲它也必須恢復狀態。
有一個選項可禁用此「重新創建循環活動」行爲,但它不會阻止與重新啓動相關的錯誤,它只會使其更難以提及。
還要注意,當活動將被銷燬時保證其呼叫的唯一方法是onPause()
。 (請參閱文檔中的活動生命週期圖。)
通過使用Bundle
和Intent
對象在活動之間傳遞數據。
你首先要創建一個Bundle
對象
Bundle b = new Bundle();
然後,存儲在anystring
字符串數據與束鍵"myname"
b.putString("myname", anystring);
現在聯繫起來,創建一個Intent
對象
Intent in = new Intent(getApplicationContext(), secondActivity.class);
通行證捆綁對象b
的意圖
in.putExtras(b);
,並開始第二活動
startActivity(in);
在第二個活動,我們要訪問從第一個活動傳遞的數據
Intent in = getIntent();
現在,你需要從包中獲取數據
Bundle b = in.getExtras();
最後得到一個名爲"myname"
String s = b.getString("myname");
鍵關聯的字符串數據包來共享活動之間的數據值, 和保存狀態的應用程序在oncreate()方法,以便應用程序會知道它停止在哪裏... 我希望它可以幫助:)
只需創建一個包,
Bundle simple_bundle=new Bundle();
simple_bundle.putString("item1","value1");
Intent i=new Intent(getApplicationContext(),this_is_the_next_class.class);
i.putExtras(simple_bundle);
startActivity(i);
在這樣的 「this_is_the_next_class.class」
您可以檢索的項目。
Intent receive_i=getIntent();
Bundle my_bundle_received=receive_i.getExtras();
my_bundle_received.get("item1");
Log.d("Value","--"+my_bundle_received.get("item1").toString);
使用捆綁包通過intent對象將數據從一個活動發送到另一個活動; Bundle保存可以是任何類型的數據。
現在我告訴如何在兩個活動之間創建數據包傳遞數據。
步驟1:在第一項活動
Bundle b=new Bundle();
b.putString("mkv",anystring);
Intent in=new Intent(getApplicationContext(),secondActivity.class);
in.putExtras(b);
startActivity(in);
步驟2:在第二個活動
Intent in=getIntent();
Bundle b=in.getExtras();
String s=b.getString("mkv");
我認爲這是對您有用...........
Bundle不僅用於在兩個不同組件之間傳輸數據,更重要的是它用於將活動被破壞之前存儲的值恢復到新活動中。
如EditText
小部件中的文本或ListView
的滾動位置。
Bundle: - 從String值到各種Parcelable類型的映射。
Bundle通常用於在android的各種活動之間傳遞數據。當我們調用onPause()然後onStop(),然後以相反的順序onStop()到onPause()時,我們會調用這個方法來調用這個方法。
系統用於恢復先前狀態的已保存數據稱爲「實例狀態」,是存儲在Bundle對象中的鍵值對的集合。
第一項活動:
String food = (String)((Spinner)findViewById(R.id.food)).getSelectedItem();
RadioButton rb = (RadioButton) findViewById(R.id.rb);
Intent i = new Intent(this,secondActivity.class);
i.putExtra("food",food);
i.putExtra("rb",rb.isChecked());
次活動:
String food = getIntent().getExtras().getString("food");
Boolean rb = getIntent().getExtras().getBoolean("rb");
- 1. 在android中我的應用程序包名稱是什麼?
- 2. 什麼是Android應用程序框架的基本Java包?
- 3. 什麼是「關注」android應用程序?
- 4. Chrome應用程序開發環境中的打包應用程序是什麼?
- 5. Android應用程序的「./META-INF/CERT.RSA」文件中包含什麼?
- 6. 什麼是Django中的「應用程序」?
- 7. 什麼是salesforce中的應用程序
- 8. Facebook應用程序中的應用程序域名是什麼?
- 9. 什麼是Android應用程序中使用的android.permission.SET_PROCESS_LIMIT?
- 10. 在Android應用程序中,「R.java」的作用是什麼?
- 11. Android中的包是什麼?
- 12. 什麼是在科爾多瓦Android應用程序中使用com.squareup.okhttp包
- 13. android應用程序應該包含什麼來獲取Flurry Analytics?
- 14. Android應用程序中的佈局充氣器是什麼?
- 15. Android應用程序中UnknownHostException的原因是什麼?
- 16. Android版Mono中的[應用程序]是什麼?
- 17. 在Android Market中託管應用的程序是什麼?
- 18. 什麼是更快的WebService用於我的Android應用程序?
- 19. 什麼是Django「應用程序」應該是什麼意思?
- 20. 什麼是包含文件到Android應用程序的正確方法?
- 21. 是什麼導致我的應用程序在此程序中崩潰? - Android Studio
- 22. uwp應用程序推薦的sqlite nuget包是什麼?
- 23. 什麼是打包企業應用程序的正確方法
- 24. 股票短信應用程序的包名稱是什麼?
- 25. getDefaultSharedPreferences() - 多包應用程序的上下文是什麼?
- 26. 什麼是包裝Django應用程序的好方法?
- 27. Windows Phone應用程序包所需的文件是什麼?
- 28. 移動應用程序的最佳SQL Azure包是什麼?
- 29. 什麼是自包含的移動應用程序?
- 30. 什麼是開發黑莓應用程序的好工具包?
Gsree感謝,,什麼是意圖 – User 2011-02-15 04:57:47
的作用,它也使用了一個活動來保存和檢索它的狀態,當它被關閉並重新啓動(例如設備旋轉時)。 – 2011-02-15 04:58:36
@Tushar查看@Ted Hopp的回覆鏈接。這將解釋更多關於意圖和活動。 – GSree 2011-02-16 00:29:08