0

sharedpreferences を使用して 1 つのアクティビティにいくつかの edittext フィールドを保存し、それらの保存された値を別のアクティビティの textview フィールドに出力しようとしています。データは最初のアクティビティで正常に保存されているように見えますが、新しいアクティビティで保存された変数を解決できません。誰かが私が間違っていることを知っていますか? ありがとう!

public class RelativeLayout extends AppCompatActivity {

EditText edit1;
EditText edit2;
EditText edit3;
public String Name = "nameKey";
public String Email = "emailKey";
public String Phone = "phoneKey";
public static final String MyPREFERENCES = "PrefStore" ;
SharedPreferences settings;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_relative_layout);
    final Button ButtonReturn = (Button) findViewById(R.id.button3);
    settings = getSharedPreferences(MyPREFERENCES, 0);
    //Onclick listen for return button press. On press App returns to main      activity.
    ButtonReturn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            edit1=(EditText)findViewById(R.id.editText);
            edit2=(EditText)findViewById(R.id.editText2);
            edit3=(EditText)findViewById(R.id.editText3);
            String n  = edit1.getText().toString();
            String e  = edit2.getText().toString();
            String p  = edit3.getText().toString();
            SharedPreferences.Editor editor = settings.edit();
            editor.putString(Name, n);
            editor.putString(Email, e);
            editor.putString(Phone, p);
            editor.apply();

2番目のアクティビティは次のとおりです。sharedpreferences で Name 変数を取得しようとしていますが、赤でエラーが表示されます。シンボル '名前' を解決できません。

public class MainActivity extends AppCompatActivity {

SharedPreferences settings;
public static final String MyPREFERENCES = "PrefStore" ;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Button ButtonDCUWeb = (Button) findViewById(R.id.ButtonDCUWeb);
    final Button ButtonStartCamera = (Button) findViewById(R.id.ButtonStartCamera);
    final Button ButtonLinearLayout = (Button) findViewById(R.id.ButtonLinearLayout);
    final Button ButtonRelativeLayout = (Button) findViewById(R.id.ButtonRelativeLayout);
    settings = getSharedPreferences(MyPREFERENCES, MODE_PRIVATE);
    String value = settings.getString(Name, "Default_Value");
4

3 に答える 3

1

変数Nameは、最初のアクティビティのスコープでのみ定義されます。2 番目のアクティビティでアクセスできるようにする必要があります...次の 2 つのことを行うことができます。

Name1 -最初のアクティビティと同じ値を使用して、2 番目のアクティビティで変数を宣言します。2 -Name変数を静的にして、2 番目のアクティビティでアクセスできるように public static String Name = "nameKey"; します。2 番目のアクティビティでは、次の方法でアクセスできます。

String value = settings.getString(RelativeLayout.Name, "Default_Value"); 
于 2015-11-15T14:17:14.333 に答える