当前位置: 首页 > 知识库问答 >
问题:

共享首选项 Android - 仅使用两个活动保存和编辑一个字符串

蓟安歌
2023-03-14

我有一个字符串,用户将编辑该字符串,并在使用应用程序时显示给他。他可以随时编辑字符串。我很熟悉SQLite数据库,但因为出于这个目的,我只使用一个字符串/一条记录,所以我觉得SharedPreferences会更好。然而,在遵循了两个不同的教程之后,我无法获得它,所以保存数据。在这两种情况下,我都需要修改教程代码,因为我将使用两个活动,一个用于查看代码,另一个用于编辑代码。我找不到在两个活动中使用共享引用的教程。下面是代码。

类查看代码:

public class MissionOverviewActivity extends Activity {

TextView textSavedMem1;


       /** Called when the activity is first created. */
       @Override
       public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.mission_view);

           textSavedMem1 = (TextView)findViewById(R.id.textSavedMem1);


           LoadPreferences();

           textSavedMem1.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    finish();
                    return;
                }});


       };



       private void LoadPreferences(){
        SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
        String strSavedMem1 = sharedPreferences.getString("MEM1", "");

        textSavedMem1.setText(strSavedMem1);

       }


      } 

类以编辑代码并返回到视图页面

public class MissionDetailActivity extends Activity {

EditText editText1;
Button buttonSaveMem1;

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.mission_edit);

       editText1 = (EditText)findViewById(R.id.editText1);
       buttonSaveMem1 = (Button)findViewById(R.id.buttonSaveMem1);


       buttonSaveMem1.setOnClickListener(buttonSaveMem1OnClickListener);


   }

   Button.OnClickListener buttonSaveMem1OnClickListener
    = new Button.OnClickListener(){

  @Override
  public void onClick(View arg0) {
   // TODO Auto-generated method stub
   SavePreferences("MEM1", editText1.getText().toString());
   viewStatement();
  }

   };





   private void SavePreferences(String key, String value){
    SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
   }

   protected void viewStatement() {
        Intent i = new Intent(this, MissionOverviewActivity.class);
        startActivity(i);
      }

}

如果有人能回答这个问题,或者给我指出使用两个类(用于编辑和显示)的sharedpreferences教程的方向,我将不胜感激!

谢谢

共有1个答案

焦驰
2023-03-14

getPre的(int)是私有的活动,你想在活动之间共享相同的共享首选项,你应该这样使用:

SharedPreferences prefs = this.getSharedPreferences(
      "yourfilename", Context.MODE_PRIVATE);

当你想重新加载它的时候,使用同样的方法。这里是< code>getPrerences(int)的文档

 类似资料:
  • 你好,我正在尝试保存一个共享首选项的主题。当用户点击某个主题的按钮时,我希望该主题被设置为默认并保存,所以当他们重新打开应用程序时,它仍然是那个新主题。

  • 我正在创建一个番茄工作计时器应用程序。它有2项活动: 主要活动是设置时间 我已经创建了一个对象,它保存了设置的时间,我希望这些时间显示在Recents活动中的按钮中。但是,似乎没有保存数据,而是显示了包名称。

  • 问题内容: 我在这个.java文件中有一个SharedPreference;在底部,您可以看到我将值保存到SharedPreferences GB_PREFERENCES_BENCH和GB_PREFERENCES_FLIES。如何在其他活动中使用这些值?请参阅第二个代码示例以了解如何使用它。 这是我要使用的方式;(特别是在on create方法中,将TextView的文本设置为SharePrefe

  • 对于下面的代码,我正在尝试检索共享的首选项,我认为它保存正确,但当我回到登录屏幕时,所有的数据都消失了。我需要它留在我回到这个屏幕上。所以我在个人资料页面上输入姓名、年龄和id到三个单独的行中。然后按下save按钮,然后按下action Bar上的back转到前面的页面。当我回到个人资料页面时,我的信息应该还在那里,但它没有任何帮助?

  • 非常感谢您的光临,我正在为学校开发一个应用程序,我遇到了另一个问题。该应用程序的主要思想是跟踪您的卡路里,我希望它能节省卡路里,所以当应用程序关闭时,它仍然会记住他们。我已经忙了一段时间了,现在尝试使用SavedPreferences,但我总是出现错误。我希望有人能帮我。 } 我可能做了很多明显的愚蠢的事情,但我真的弄不明白。 多谢!

  • 以下是我的主要活动 这是我的作品 下面是我的activity_main.xml 和主要活动 现在调试器输出 很明显,即使我稍微调整一下,它也不能正常工作。接下来是:使用共享首选项保存android主题