如何使用SharedPreferences保存在edittext中输入的文本,并在另一个Activity中的TextView中显示它
我试图从活动中保存在edittext中输入的文本并将其发送到另一个活动,以便它可以显示在最初不可见的文本视图中。 所以请帮助我..
这是我的第一个xml。 main.xml中
这是我的第二个xml。
next.xml:
这是我的主要行为代码。 MainActivity.java
public class MainActivity extends Activity { public SharedPreferences savedData; private Button mbtn_save; private EditText medit_currency; public String s1; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mbtn_save=(Button)findViewById(R.id.button1); medit_currency=(EditText)findViewById(R.id.editText5); savedData=PreferenceManager.getDefaultSharedPreferences(this); mbtn_save.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub s1=medit_currency.getText().toString(); savePreference(s1,s1); Intent i=new Intent(MainActivity.this,Next.class); startActivity(i); } }); public void savePreference(String key,String value) { savedData=getPreferences(MODE_PRIVATE); SharedPreferences.Editor e=savedData.edit(); e.putString(key, value); e.commit(); Toast.makeText(MainActivity.this, "Saved", Toast.LENGTH_SHORT).show(); } public void showPreference(String key) { savedData=getPreferences(MODE_PRIVATE); String text=savedData.getString(key, ""); } }}
这是我的第二项活动
Next.java
public class Next extends Activity { MainActivity ma; private TextView mtext_one; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.next); mtext_one=(TextView)findViewById(R.id.textView1); ma=new MainActivity(); ma.savedData=getPreferences(MODE_PRIVATE); mtext_one.setVisibility(CONTEXT_INCLUDE_CODE); mtext_one.setText(ma.savedData.getString("10", "")); } }
一旦我保存首选项并转移到另一个活动,我无法在Next.java中显示文本..帮助我..
在MainActivity.java中,通过intent将值传递给第二个活动,如下所示:
@Override public void onClick(View arg0) { // TODO Auto-generated method stub s1=medit_currency.getText().toString(); savePreference(s1,s1); Intent i=new Intent(MainActivity.this,Next.class); // add below line intent.putExtra("s1", s1); startActivity(i); }
在Next.java中,在onCreate中,您可以使用:
Bundle bundle = getIntent().getExtras(); String s1 = bundle.getString("s1");
使用这一个:
SharedPreferences sp = getSharedPreferences("Key", Activity.MODE_PRIVATE); SharedPreferences.Editor edt = sp.edit(); edt.putString("Name", "your Edit Text Value"); edt.commit();
在新活动中检索:
SharedPreferences sp = getSharedPreferences("Key", Activity.MODE_PRIVATE); String name = sp.getString("Name", "");
mtext_one.setText(ma.savedData.getString("10", ""));
把你正在使用的密钥保存起来。 所以,它将是mtext_one.setText(ma.savedData.getString(key, ""));
像这样打开SharedPreference
:
SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(this);
这将获得apps
默认的共享首选项。
用于将文本输入到sharedPrefernces中的EditText
SharedPreferences spppp = getSharedPreferences("tab", 0); SharedPreferences.Editor editors = spppp.edit(); editors.putString("for", "you_value"); editors.commit();
为了获得另一项活动的价值
SharedPreferences spppp = getSharedPreferences("tab", 0); String get_value = spppp.getString("for" , "");
干杯
最好使用intent extras而不是sharedPreference。
以下是使用intent extras的示例。
在您的第一个活动(A)中 :
Intent i = new Intent(A.this, B.class); i.putExtra("someName", variableThatYouNeedToPass); startActivity(i);
在你的第二个活动(B)中 :
Bundle extras = getIntent().getExtras(); int fetchedVariable = extras.getInt("someName");