2010-05-11 20 views
8

Hy vọng bạn sẽ hiểu câu hỏi của tôi bằng tiếng Anh cơ bản của tôi ...Bất kỳ giải pháp nào để lưu Mục đích trong cài đặt?

Trong ứng dụng của mình, tôi cho phép người dùng có nút khởi chạy ứng dụng bạn chọn. Tôi không gặp vấn đề gì khi tạo danh sách tất cả các ứng dụng đã cài đặt, lấy Intent và khởi chạy ứng dụng được chọn.

Nhưng tôi muốn lưu ý định tương ứng trong các thiết lập cho thời gian tới người dùng sử dụng ứng dụng của tôi, nhưng các thiết lập chỉ cho phép tôi để lưu kiểu dữ liệu cơ bản (Integer, boolean, Strings, vv)

Vì vậy, câu hỏi của tôi là làm thế nào để tiết kiệm một ý định một cách thông minh.

Tôi hy vọng bạn có thể giúp tôi tìm giải pháp.

+0

Hãy thử giải pháp này dựa trên Gson: http://stackoverflow.com/a/34580505/2267723 –

Trả lời

23

Bạn nên sử dụng myIntent.toURI() để lưu trữ các Intent, và sử dụng Intent.getIntent(String uri) để khôi phục lại Intent.

public void saveIntent(Intent intent) { 
    mSharedPrefs.edit().putString(SOME_KEY, intent.toURI()).commit(); 
} 

public Intent restoreIntent() { 
    String uri = mSharedPrefs.getString(SOME_KEY, *mSomeDefaultUri*); 
    return Intent.getIntent(uri); 
} 
+1

Tuyệt vời! Yêu câu trả lời này! –

+2

Chỉ để biết thông tin, _toUri() _ hiện không được chấp nhận. Sử dụng ** toUri (int flags) ** để thay thế. – JJ86

2

Thay vì lưu Intent bạn chỉ có thể lưu String cần thiết để tạo Intent.

Ví dụ:

Intent intent = new Intent("com.android.notepad.action.EDIT_TITLE"); 

Bây giờ bạn chỉ lưu trữ một String chứa com.android.notepad.action.EDIT_TITLE

Các vấn đề liên quan