我有兩個活動在我的應用程序中說A & B.活動A需要B存儲的數據(當前共享首選項)。但要查詢活動A中的數據,我需要B的上下文。但是,活動A沒有任何方法來獲取活動B的上下文(根據應用程序流程)。有沒有辦法或使用數據庫將是一個更好的選擇?SharedPreferences或數據庫?
0
A
回答
5
如果您要存儲在SharedPreferences中,那麼您不需要Activity B的上下文。活動A的上下文可以訪問應用程序的SharedPreferences,因爲它們對應用程序是「全局」的。
代碼示例
ActivityA.this.getSharedPreferences("SOMETHING", MODE_PRIVATE);
至於如果你需要一個數據庫定義,你沒有說什麼數據要存儲。因此不可能說出來。
4
爲什麼你需要活動A的上下文?您可以在每個活動中使用getApplicationContext().getSharedPreferences()
來存儲/檢索SharedPreferences。
此外,根據要存儲的數據,您可能需要考慮使用Intent將數據從活動A傳遞到活動B.例如,要從A啓動活動B,您可以使用類似下面的內容:
Intent i = new Intent(getApplicationContext(), ActivityB.class);
i.putExtra("someIntData",1234);
i.putExtra("someStringData","yourdata");
startActivity(i);
然後無論你需要ActivityB的數據,你可以這樣做:
int yourIntData = getIntent().getIntExtra("someIntData",0);
String yourStringData = getIntent().getStringExtra("someStringData");
這將是一個速度更快,因爲你不必擊中SharedPreferences或數據庫文件系統。
1
您可以將所有數據存儲在SharedPreferences中,並且可以從應用程序的每個活動訪問它們。
只要做到這一點像它在這裏解釋: http://developer.android.com/guide/topics/data/data-storage.html#pref
2
您可以使用
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
有任何活動,它會返回一個SharedPreferences
對象綁定到你的應用程序的軟件包名稱,不管是哪個活動你的作爲上下文傳遞。
或者,您可以爲您的共享首選項選擇一個名稱,並將其傳遞給活動的getSharedPreferences
方法(正如Sam_D和Graham在他們的答案中指出的那樣)。
相關問題
- 1. SharedPreferences或SQLite數據庫?
- 2. Android SQLite數據庫和SharedPreferences
- 3. SharedPreferences與數據庫vs JSON
- 4. 將sharedPreferences或數據庫用於「一行」數據
- 5. Sharedpreferences不保存或加載數據
- 6. SharedPreferences是否存儲在數據庫中?
- 7. SharedPreferences用於我的數據庫
- 8. SharedPreferences替換數據
- 9. 將數據從sharedpreferences發送到網絡中的數據庫
- 10. SharedPreferences或SQlite
- 11. SharedPreferences或Sqllite
- 12. 重新加載SharedPreferences數據
- 13. SharedPreferences兩次保存數據
- 14. 在sharedpreferences中編輯數據
- 15. sharedpreferences不保存數據
- 16. 使用sharedpreferences保存數據
- 17. sharedPreferences不保存數據
- 18. Android - Sharedpreferences收集數據
- 19. 檢索hashmap數據SharedPreferences
- 20. 雲數據庫或本地數據庫
- 21. 關係數據庫或NoSQL數據庫
- 22. Android的SharedPreferences或sqllite
- 23. 庫或數據庫連接
- 24. 數據庫或XML
- 25. sharedpreferences沒有保存或加載我的數據的Android
- 26. 保存一些數據sqlite,SharedPreferences或文件?
- 27. 用於永久性數據存儲的SQLite或SharedPreferences?
- 28. 編程決定Java或.NET,數據庫或沒有數據庫
- 29. 數組或數據庫表?
- 30. 數據庫或數組