0

我今天在这里得到了一些帮助来制作一个字符串,按下按钮后会显示该字符串:

public void addListenerOnButton() {

    button1 = (Button) findViewById(R.id.buttoncalculate);
    button1.setOnClickListener(new View.OnClickListener() {

    public void onClick(View view) {

            EditText editText = (EditText)findViewById(R.id.editText1);
            String text = editText.getText().toString();

             Intent myIntent = new Intent(view.getContext(),Calculated.class);
             myIntent.putExtra("mytext",text);
             startActivity(myIntent);

        }
    });

它显示为:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    setContentView(R.layout.calculated);

       mTextview = (TextView)findViewById(R.id.textView1);

       mTextview.setText(getIntent().getStringExtra("mytext"));
}

但我注意到这只是暂时的。一旦我离开应用程序或进入其他活动,字符串就会被重置..

我的问题是:如何将本地字符串存储为真实字符串,从而将其显示在其他活动中,甚至在应用程序关闭后?

是strings.xml的东西吗?

谢谢

4

2 回答 2

1

是strings.xml的东西吗?

否 - 这是只读的并在编译期间使用。

如何将本地字符串存储为真实字符串,从而将其显示在其他活动上,甚至在应用程序关闭后?

您在谈论的是持久存储。您有 3 个主要选项(还有其他选项,但由于这是一个相当广泛的主题,我将保持简单):

将其存储在文件中

将字符串保存到文件中,并在应用程序启动时或您需要的地方加载它。

请参阅这篇关于读取/写入文本文件Android 写入文件的 SO 帖子

使用 SharedPreferences

SO Post 在这个android 读/写用户首选项上显示代码

可能是存储简单字符串且易于编码的最佳答案。如果您启动 Activity 并且没有传入意图,则可以从SharedPreferences加载字符串。

mTextview.setText(getIntent().getStringExtra("mytext"));

变成

final String myString = getSharedPreferences("PREF_NAME", Context.MODE_PRIVATE).getString("SOME_STRING", "Default if not found");

mTextview.setText(myString);

以上纯粹是为了演示,可能需要根据您自己的需要进行整理和完善。

使用数据库

对您来说可能是最糟糕的选择,但值得考虑。如果你开始有多个字符串或复杂选项,那么 SQLite 是内置在 Android 中的。

在这里可以找到一个很好的教程http://www.vogella.com/articles/AndroidSQLite/article.html

于 2013-02-24T17:37:19.933 回答
0

我更喜欢用来Shared Preferences储存价值。

MainActivity.java

public void addListenerOnButton() {

    button1 = (Button) findViewById(R.id.buttoncalculate);
    button1.setOnClickListener(new View.OnClickListener() {

    public void onClick(View view) {

            EditText editText = (EditText)findViewById(R.id.editText1);
            String text = editText.getText().toString();

            SharedPreferences sp = getSharedPreferences("MyPrefs", MODE_PRIVATE);

            Editor editor = sp.edit();
            editor.putString("mytext", text);
            editor.commit();


             Intent myIntent = new Intent(view.getContext(),Calculated.class);
             startActivity(myIntent);

        }
    });

计算出来的.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    setContentView(R.layout.calculated);

       mTextview = (TextView)findViewById(R.id.textView1);

       mTextview.setText(getSharedPreferences("MyPrefs", MODE_PRIVATE).getString("mytext",null););
}
于 2013-02-24T17:44:24.683 回答