2011-05-12 43 views
3

我是Android應用程序中的新開發者.i想要使用共享偏好concept.i保存數據,我將數據保存在一個活動中,並在另一個活動中獲取相同的數據。想發送一個字符串[] = { 「一」, 「二」, 「三」}一個活動到另一個activity.i已經寫代碼如下在android中使用共享偏好保存數據

Main1.java

public class Main1 extends Activity 
{ 

    @Override 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    SharedPreferences shp=getSharedPreferences("TEXT", 0); 
    final Editor et=shp.edit(); 

    ((Button)findViewById(R.id.button1)).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      String s1=((EditText)findViewById(R.id.editText1)).getText().toString(); 
      et.putString("DATA", s1); 

      String s2[]={"one","two","three"}; 

      //here i would like to save the string array 

      et.commit(); 
      Intent it=new Intent(Main1.this,Main2.class); 
      startActivity(it); 

     } 
    }); 


} 

Main2.java

@Override 

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main2); 
    String kk=getSharedPreferences("TEXT", 0).getString("DATA", null); 

    //here i would like to get the string array of Main1.java 

    ((EditText)findViewById(R.id.editText1)).setText(kk); 
} 

我們可以從Main1.java獲取字符串數組值到Main2.java嗎?

回答

1

把它放進首發意圖:

Intent it = new Intent(Main1.this,Main2.class); 
it.putExtra("MY_STRING_ARRAY", s2); 

拿回來的第二個活動:

String[] myStringArray = getIntent().getStringArrayExtra("MY_STRING_ARRAY"); 
+0

但它並沒有保存在真實的設備 –

+0

@prasad你不必將數據保存在共享首選項中,只是爲了在活動之間傳遞它。這就是你想要的嗎? –

+0

我想保存數據並在需要相同數據時重複使用 –

0

如果你想從一個活動將數據發送到另一個那麼最好的辦法是使用意圖對象的putExtra方法發送數據

Intent i = new Intent(Activity1.this, Activity2.class); 
i.putExtra("data1", "some data"); 
i.putExtra("data2", "another data"); 
i.putExtra("data3", "more data"); 
startActivity(i); 

並且您可以從接收活動中獲取數據活性2這樣

Object data1 = getIntent().getExtras().get("data1"); 

希望幫助

+0

但它不是在實際設備中保存 –

+0

它不會保存實際將數據從Activity1發送到Activity2的數據。 putExtra爲數據設置了一個關鍵值對,我已經在我的答案中提到了如何從Activity1發送數據以及如何在Activity2中接收數據。 –

+0

有沒有什麼方法可以保存字符串數組值?我想在需要時重用。 –

0

如果你想保存通過SharedPreference您的信息不只是把它傳遞活動,使用像這樣的代碼:

SharedPreferences settings = getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE); 
    SharedPreferences.Editor prefEditor = settings.edit(); 
    prefEditor.putString("string_preference", "some_string"); 
    prefEditor.putInt("int_preference", 18); 
    prefEditor.commit(); 

的commit命令是實際將數據保存到SharedPreferences的響應。