【问题标题】:How do i store a textview using Shared Preferences如何使用共享首选项存储文本视图
【发布时间】:2015-02-17 16:06:45
【问题描述】:

所以我的问题可能被问了很多次,但我在互联网上的任何地方都找不到答案。

。我想要做的是使用 sharedprefeences 存储一个文本视图。

在我的第一堂课 (xp) 中,我将 textview 发送到另一堂课(反馈) 现在反馈正在接收文本视图,没有任何问题,但从未保存它。即使在关闭应用程序后,我如何将该文本视图存储在(反馈)类中??

这是打算使用 textview 的类

public class Xp extends Activity {
Button accept;
TextView textV;
TextView xbnum;
public static final String PREFS_NAME = "MyPrefsFile";

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.xp);
    accept = (Button) findViewById(R.id.accept);
    textV = (TextView) findViewById(R.id.textV);
    xbnum = (TextView) findViewById(R.id.xpnum);


    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String value1 = extras.getString("intent_xp");
        final String value = extras.getString("intent_extra");
        SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
        SharedPreferences.Editor edit = settings.edit();
        edit.putString(PREFS_NAME, value);
        edit.putString(PREFS_NAME,value1);

        textV.setText(value);
        xbnum.setText(value1);


        edit.commit();
        accept.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent i = new Intent(Xp.this, feedback.class);
                i.putExtra("intent_extra", textV.getText().toString());
                startActivity(i);
                finish();
            }
        });


    }
}

}

这里是接收意图并保存文本视图的类(按原样)

public class feedback extends Activity {
TextView test1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.feedback);
    test1 = (TextView) findViewById(R.id.test1);
    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String value = extras.getString("intent_extra");
        SharedPreferences settings = getSharedPreferences("intent_pref", 0);
        SharedPreferences.Editor edit = settings.edit();
        edit.putString("intent_pref",value);
        test1.setText(value);
        edit.apply();

    }

}

}

班级正在接收课文,一切正常。只有当我关闭应用程序并打开它时,一切都会被清除..

【问题讨论】:

  • 如果我对您的理解正确,您可能需要使用 general 共享首选项而不是特定于活动的首选项。
  • 为什么使用不同的 SharedPreference 名称?除了保存价值之外,您的反馈活动还能做什么?您是否曾经从 SavedPreferences 检索值?
  • 我将 sharedprefrences 命名为相同的名称,但仍然没有保存。现在我只希望它保存该值并在那里显示,稍后我将添加更多功能。

标签: java android android-intent sharedpreferences


【解决方案1】:

可能我错了,但您似乎误解了共享偏好的工作原理。

如果您想在首选项文件中存储多个值并在其他类中访问它,您必须创建一个 SharedPreferences 实例。

在您的情况下,这意味着在“反馈”和“Xp”中创建一个 SharedPreferences 实例,如下所示:

SharedPreferences settings = getSharedPreferences("MyPrefsFile", SharedPreferences.MODE_PRIVATE);

然后使用此实例通过编辑器存储您的数据。 如果您不能为同一个键存储多个值,请小心。

您还可以在实际操作中将值存储在多个文件中。但是,如果您想使用您的首选项文件的值设置您的 textview,您必须使用共享首选项实例上的 getString("key_of_your_value") 方法来获取它。

【讨论】:

  • 对不起,我尝试了你所说的一切,但仍然没有用。我在两个类中创建了该实例,在两个类中使用了相同的名称。没用。我什至尝试了settings.getString 仍然没有工作。我的意思是它显示但从不保存。请问还有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多