如何在另一个活动中检索共享偏好的值?

时间:2015-07-17 10:41:51

标签: java android sharedpreferences

Jam.java

editText=(EditText) findViewById(R.id.userNameEditText1);
button=(Button) findViewById(R.id.enterButton1);

sharedPreferences=getSharedPreferences(SHARED_NAME_STRING1, MODE_PRIVATE);
String userNameString=sharedPreferences.getString(USER_NAME_STRING1, "");

editText.setText(userNameString);

        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                Intent intent=new Intent(Jam.this, MainActivity.class);
                intent.putExtra("user", string);

                SharedPreferences.Editor editor=sharedPreferences.edit();
                editor.putString(USER_NAME_STRING1, string);
                editor.commit();

                startActivity(intent);

            }
        });

FragA.java

tvs.setText(getActivity().getIntent().getStringExtra(Jam.USER_NAME_STRING1)+" logged in");

在这里,您可以看到我使用intent传递了共享首选项的值, 但我想要另一种方法来获取我在另一个活动或片段中创建的共享偏好的值,如何?

2 个答案:

答案 0 :(得分:1)

您可以使用intent将小数据发送到其他活动,如下所示:

Intent intent=new Intent(Login.this, MainActivity.class);
intent.putExtra("user", userName);
startActivity(intent);

您可以像这样得到这个意图值:

活动:

String uName = getIntent.getStringExtra("user");

SharedPreferences对于任何地方的商店数据都很有用,可以从任何地方访问它。您也可以使用共享首选项。但是,不要混淆这两件事。如果您想要将用户名访问应用程序中的多个位置,则可以使用共享首选项。

共享首选项示例:

使用以下方式存储数据:

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
    Editor editor = pref.edit();
    editor.putBoolean("key_name1", true);           // Saving boolean - true/false
    editor.putInt("key_name2", "int value");        // Saving integer
    editor.putFloat("key_name3", "float value");    // Saving float
    editor.putLong("key_name4", "long value");      // Saving long
    editor.putString("key_name5", "string value");  // Saving string

    // Save the changes in SharedPreferences
    editor.commit(); // commit changes

检索数据:

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE); 
pref.getBoolean("key_name1", null);         // getting boolean
    pref.getInt("key_name2", null);             // getting Integer
    pref.getFloat("key_name3", null);           // getting Float
    pref.getLong("key_name4", null);            // getting Long
    pref.getString("key_name5", null);      // getting String

如果要将其设置为文本视图,请使用:

tvs.setText(pref.getString("key_name5", null));

答案 1 :(得分:0)

首先启动sharedPreferences

tvs.setText(sharedPreferences.getString(USER_NAME_STRING1, ""));