2015-03-31 74 views
2

我是android的新手。我想在我的應用程序中使用sharedpreferences。我想使用id作爲主鍵,以便在添加新字符串值時自動遞增。它可以通過使用SQLite完成,但這是非常冗長的任務。我想讓我的應用程序變得簡單。如何在Android的共享首選項中使用主鍵?

的insert.xml文件如下:

package com.example.shiza.dailyquranquote; 

import android.content.SharedPreferences; 
import android.content.SharedPreferences.Editor; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.EditText; 


public class InsertVerse extends ActionBarActivity { 
    EditText verseContent; 
    EditText verseId; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_insert_verse); 
    } 
    public void saveVerse(View view) 
    { 
     verseContent = (EditText)findViewById(R.id.insertVerse); 
     verseId = (EditText)findViewById(R.id.insertId); 


     SharedPreferences sharedPreferences = getSharedPreferences("QuranVerse",0); 

     Editor editor = sharedPreferences.edit(); 

     editor.putInt("id", Integer.parseInt(verseId.getText().toString())); 
     editor.putString("verse", verseContent.getText().toString()); 

    } 

} 

回答

1

SharedPreferences不是一個數據庫。這是存儲配對鍵/值的文件。因此,舉例來說,如果您在放置一對「id」/ 6之後放置一對「id」/ 5,當這對「id」/ 5將被替換爲新對「id」/ 6。

請看看:

http://developer.android.com/reference/android/content/SharedPreferences.html

http://developer.android.com/guide/topics/data/data-storage.html#pref

編輯1

SharedPreferences通常用於存儲設置,計數器,參數,信息有關設備的擁有者, ...

Datab ASE被用來存儲多個相同的記錄,例如,用戶列表,產品列表,...

+0

如果我想有不同的鍵/值對,我不能使用共享dPreferences?即例如,1 - > John,2 - > Smith – khan 2015-03-31 11:53:17

+0

當然可以,但請記住SharedPrefs不是數據庫。我更新我的答案。 – LaurentY 2015-03-31 12:08:46

0

僅適用如果你想要一個記錄(鍵),並且每次添加新的字符串時,id計數都會增加。 但是如果你有多個記錄遵循@LaurentY和@ user94685231

public void saveVerse(View view) 
     { 
      verseContent = (EditText)findViewById(R.id.insertVerse); 
      verseId = (EditText)findViewById(R.id.insertId); 


      SharedPreferences sharedPreferences = getSharedPreferences("QuranVerse",0); 
      int count=sharedPreferences.getInt("id",0); 
      count++; 
      Editor editor = sharedPreferences.edit(); 

      editor.putInt("id", count); 
      editor.putString("verse", verseContent.getText().toString()); 

     } 
1

SharedPreferences您不能設置主鍵,因爲它是一個鍵/值對。但是,你一定能夠有多個值一鍵(特殊字符分隔)

id: 0;1;2 

name: John Smith;Rickey Watson;Martin Guptill 

現在,

0 is John Smith, 
1 is Ricky watson and 
2 is Marting Guptill. 

這可能是一個你'尋找...

+1

謝謝你的回答。我解決了它。我需要爲每個值使用不同的鍵。 – khan 2015-03-31 21:44:55

+0

這是我的榮幸 – 2015-03-31 21:50:35