2012-10-15 52 views
3

我需要一些幫助。我是新的android開發人員。我無法在共享首選項編輯器中保存圖像。我想保存圖像我的列表。如何使用共享首選項編輯器保存

這裏是我的Main.java

public class Main extends ListActivity { 

    ArrayList<PersonalInfo> newList = null; 
    private Button btnSave = null; 

    private EditText txtName = null; 
    private EditText txtMobile = null; 
    private CustomListAdapter newAdpt = null; 
    private int i = 0; 
    private ImageView images; 
    public static String filename = "MySharedString"; 
    SharedPreferences someData; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     someData = getSharedPreferences(filename, 0); 
     newList = new ArrayList<PersonalInfo>(); 

     newAdpt = new CustomListAdapter(this, R.layout.list_item, newList); 
     setListAdapter(this.newAdpt); 

     txtName = (EditText) findViewById(R.id.txtName); 
     txtMobile = (EditText) findViewById(R.id.txtMobile); 
     images = (ImageView)findViewById(R.id.imageView1); 

     btnSave = (Button) findViewById(R.id.btnSave); 

     btnSave.setOnClickListener(new OnClickListener() { 

      public void onClick(View arg0) { 
       newList = new ArrayList<PersonalInfo>(); 
       PersonalInfo info = new PersonalInfo(); 
       String dataTxtName = txtName.getText().toString(); 
       String dataTxtMobile = txtMobile.getText().toString(); 
       int dataImage = images.getId(); 
       SharedPreferences.Editor editor = someData.edit(); 

       editor.putString("sharedStringName", dataTxtName); 
       editor.putString("sharedStringMobile", dataTxtMobile); 
       editor.putInt("sharedIntImage", dataImage); 

       info.SetName(dataTxtName); 
       info.SetMobile(dataTxtMobile); 
       info.SetImage(dataImage); 
       newList.add(info); 


       if (newList != null && newList.size() > 0) { 
        newAdpt.notifyDataSetChanged(); 
        newAdpt.add(newList.get(0)); 
        i++; 

       } 

       newAdpt.notifyDataSetChanged(); 

      } 

這裏是我的PersonalInfo.java

public class PersonalInfo { 
    private String name = ""; 
    private String mobile = ""; 
    private int image; 

    public void SetName(String name) { 
     this.name = name; 
    } 

    public String GetName() { 
     return this.name; 
    } 

    public void SetMobile(String mobile) { 
     this.mobile = mobile; 
    } 

    public String GetMobile() { 
     return this.mobile; 
    } 

    public void SetImage(int dataImage) { 
     this.image = dataImage; 
    } 

    public int GetImage() { 
     return this.image; 
    } 

我怎樣才能解決這個問題?

+0

你的照片是什麼,你有什麼嘗試? – njzk2

+1

如果您嘗試在SharedPreferences中存儲對象,那麼這將不起作用。您只能將原始類型存儲在SharedPreferences中。 相反,您可以將圖像的路徑寫入SharedPreferences對象,然後將圖像作爲普通文件寫入SD卡。 如果因爲您要存儲PersonalInfo類,您需要將其設置爲可串行化,並將其寫入對象流到文件。 – Darwind

+0

只在我的listrow中發送文本。圖像不會被髮送。 – user1303250

回答

3

添加editor.commit();完成修改SharedPreferences後。

+2

另請閱讀文檔:http://developer.android.com/guide/topics/ data/data-storage.html#pref – shkschneider

2

每次對SharedPreferences進行任何更改時,都必須添加editor.commit()。

+0

僅在我的列表行中發送文本。圖像沒有發送。 – user1303250

+0

請閱讀Darwind的評論。 –