2012-09-27 34 views
0

我创建共享偏好活动,和我有两个字符串保存...的Android - >加载在主要活动中共享偏好

public class sharedprefs extends Activity { 


    EditText email; 
    EditText lozinka; 
    Button btnEmail; 
    Button btnLozinka; 
    Button btnPovratak; 
    TextView email2; 
    TextView lozinka2; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.sharedpref); 

     email2 = (TextView)findViewById(R.id.textView4); 
     lozinka2 = (TextView)findViewById(R.id.textView5); 

     email = (EditText)findViewById(R.id.editText1); 
     lozinka = (EditText)findViewById(R.id.editText2); 

     btnEmail = (Button) findViewById(R.id.button1); 
     btnLozinka = (Button) findViewById(R.id.button2); 
     btnPovratak = (Button) findViewById(R.id.button3); 

     LoadPreferences(); 

     btnEmail.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 

       SavePreferences("EMAIL", email.getText().toString()); 
       LoadPreferences(); 


      } 
     }); 

     btnLozinka.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 

       SavePreferences("LOZINKA", lozinka.getText().toString()); 
       LoadPreferences(); 


      } 
     }); 

     btnPovratak.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 

       finish(); 


      } 
     }); 
    } 

    private void SavePreferences(String key, String value){ 
     SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putString(key, value); 
     editor.commit(); 
     } 

     private void LoadPreferences(){ 
     SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
     String stremail = sharedPreferences.getString("EMAIL", ""); 
     String strlozinka = sharedPreferences.getString("LOZINKA", ""); 
     email2.setText(stremail); 
     lozinka2.setText(strlozinka); 
     } 


} 

我测试了它,并与TextView的...当我退出并重新显示它们输入我的应用程序,它们仍然显示。现在我需要这两个字符串用于我的主要活动中的httpClient。问题是,我不知道如何将它们加载到我的主要活动中,以及我需要做什么(在主要活动中声明)以使其工作?

回答

1

您需要调用相同的方法LoadPreferences(),您需要在您的主要活动,以代码(或在你想要这个SharedPreference任何其他活动。

private void LoadPreferences() 
{ 
     SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE); 
     String stremail = sharedPreferences.getString("EMAIL", ""); 
     String strlozinka = sharedPreferences.getString("LOZINKA", ""); 
     // Strings variable are ready with the values, you can assign them to other component if you want 
} 
1

退房的instructions on the Android Developers documentation处理跨多个SharedPreferences 。活动这也been covered in another answer

推荐的方式来访问SharedPreferences是:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 

所以你的情况,你可以写为:

SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 

这都将在PreferenceActivity和你的正常活动的主要工作。

+0

好的,谢谢。结束在哪部分活动中,我称之为?不管还是?如果你可以告诉我,我还有什么需要定义的主要活动,以及如何将这个保存的喜好转移到te字符串?或者我如何在主要活动中使用它们? – Goran

+0

您可以简单地将您在PreferenceActivity中使用的两种方法复制到主Activity中。只要确保在尝试访问SharedPreferences对象之前先分配SharedPreferences对象!它可能有助于在班级顶部定义您的“首选项”变量,以便在班级中的多个功能之间共享它。 – David