2016-10-25 119 views
0

這將是我在android studio中的第一個項目。我有一些java和C/C++的經驗。當談到程序開發時,我仍然是一個初學者。我從來沒有開發過一個android應用程序。如何在多個活動之間共享數據?

此應用將用於追蹤鍛鍊計劃。用戶將被要求輸入以下各項中的1個代表最大值;長凳,下蹲,硬拉。我希望應用程序使用這些輸入來將鍛鍊程序基於它們。這將涉及多個活動共享和操縱這些數據。

什麼是最好的方式來接受用戶輸入,保存它(即在應用程序終止時將其存儲在某處並保持不變),並讓多個活動訪問它以顯示?該應用只會要求用戶輸入一次。如果用戶想要改變輸入,可以在設置中完成。

+3

您可以將數據保存在'SharedPreferences'或'database'中。那麼在所有活動中,您都可以訪問它。 –

+0

它全部寫在文檔中:https://developer.android.com/guide/topics/data/data-storage。html –

回答

0

是的,意圖是通過活動之間信息的方式,但你很快就會發現,他們的目的不是來保存數據的整體目標和保持某種持久性,試圖實現你的數據傳遞將成爲你的噩夢。

看看一些持久性框架(讓它成爲一些SQLite的包裝或我個人很喜歡,因爲它們提供了非常酷的功能,如實時自動更新的對象realm.io,它在自己的C++引擎構建,它是非常易於使用)...一旦您將數據存儲在某種數據層中,您只需通過意圖傳遞對象的標識並在接收活動中查詢它們...

這樣,模型在整個應用程序中保持不變,不必將對象的更改傳播回源活動並丟失與Parcelables相關的地獄(使用序列化您的方法r對象將其存儲在意圖中)

快樂編碼!

+0

這是最有意義的。謝謝。 – Hermes

1

使用意圖

試試這個 在第一個活動

Intent intent = new Intent(Activity_FROM.this, Activity_TO.class); 

intent.putExtra("KEY1", value); 

intent.putExtra("KEY2", "a value"); 

startActivity(intent); 

On second activity 

Bundle bundle = getIntent().getExtras(); 

int value = bundle.getInt("KEY1"); 

String value2 = bundle.getString("KEY2"); 

爲了有更清晰的,你最好了解Android框架和術語的基本概念。完成後,您可以輕鬆瞭解流程。

訪問www.vogella.com

0

意圖是將數據從一個活動傳遞到另一個的一種方式。但是,每當您從一個活動轉移到另一個活動時,您都需要通過它... 一些更簡單有效的方法是使用單例:一個類您可以通過爲其創建實例來寫入和訪問任何活動。只需看看這個https://gist.github.com/Akayh/5566992

4

當您調用意圖從一個活動跳轉到其他活動時,您可以放置​​一些您需要的數據或值以進行第二次活動或進一步使用。您必須對所有活動呼叫都做同樣的事情,最後您可以在需要數據的地方使用它。

intentObject.putExtra("KEY", value); 

Bundle bundle = getIntent().getExtras(); 

int value = bundle.getInt("KEY"); 
or 
String value = bundle.getString("KEY"); 
or 
DataObject dataObject = bundle.getString("KEY"); 

您可以使用Gson來放置數據對象並獲取數據對象。