2011-05-12 44 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的响应。