【问题标题】:how to send variable to another class and the save it and send it back to another class如何将变量发送到另一个类并保存并将其发送回另一个类
【发布时间】:2014-08-20 05:05:01
【问题描述】:

所以我想要做的是将 int "inc" 和 .putPutExtra("Inc",inc) 带到我的第二个名为 "Settings" 的类中,然后通过 "SharedPreferences" 保存它,然后当用户推送按钮返回到我的主类,它会自动将其加载到 int 中

这是我用来从 MainActivity 发送到设置类的代码

int inc = 0;

Intent GoToSettings = new Intent(getApplicationContext(), settings.class);
GoToSettings.putExtra("Inc", inc);
startActivity(GoToSettings)

这是接收它的代码

Intent intent = getIntent();
Inc = intent.getIntExtra("Inc", 10);

这里是保存“Inc”的代码

 SharedPreferences Saveinc=getSharedPreferences("IncSave", Context.MODE_PRIVATE);
                SharedPreferences.Editor SaveIncE=Saveinc.edit();
                SaveIncE.putInt("IncSave", Inc);
                SaveIncE.commit();

这是在保存 int 后接收 int 的代码

    int inc = 1;

    Intent GoToMain = getIntent();
    inc = GoToMain.getIntExtra("IncSave", 1);


SharedPreferences GetSavedinc=getSharedPreferences("IncSave", Context.MODE_PRIVATE);
int  IncSave=GetSavedUpCount.getInt("IncSave", 1);
inc=IncSave;

我不,它不是最简单的布局,但我是新手,还没有真正完美地学习语法。 我也是该网站的新手,所以如果我不遵守规则,我很抱歉。

【问题讨论】:

  • 但是在您的第二个活动中,当您检索变量并保存在共享首选项中时,无需在另一个活动中通过Intent GoToMain = getIntent(); inc = GoToMain.getIntExtra("IncSave", 1); 获取它。
  • 你为什么不从SharedPreferences再读一遍呢?
  • 参考此链接了解更多关于共享偏好stackoverflow.com/questions/24772291/…

标签: java android file-io


【解决方案1】:

在您上一个活动中,您只想从 SharedPreference 中获得价值,只需使用它即可。

//int inc = 1;
//Intent GoToMain = getIntent();                     //Comment all this..
//inc = GoToMain.getIntExtra("IncSave", 1);


SharedPreferences GetSavedinc=getSharedPreferences("IncSave", Context.MODE_PRIVATE);
int  IncSave=GetSavedUpCount.getInt("IncSave", 1);
Log.v("My Value",IncSave+"");

【讨论】:

    【解决方案2】:

    如果无论如何你的 int 'inc' 最终会出现在你的 SharedPreferences 中,你可以跳过将它传递给另一个类,直接将它写入你的主要活动中的首选项中。

    当您返回主活动时,您可以在 onCreate/onResume 期间从共享首选项中读取它,并且您可以在设置类的构造函数中从共享首选项中读取它。

    【讨论】:

      【解决方案3】:

      如果你想在 2 个活动之间发送一些数据,你不应该使用共享首选项。 以下是执行此操作的首选方法: 从 Activity1 向 Activity2 发送数据:

      Intent intent = new Intent();
      intent.putExtra("numberFromActivity1", 122);
      startActivityForResult(intent, REQUEST_CODE);
      

      在 Activity2 中,使用以下代码阅读:

          Intent intent = getIntent();
          int inc = intent.getIntExtra("numberFromActivity1", 0); // 122
      

      从 Activity2 向 Activity1 发送数据:您可以在 onDestroy() 或 onBackpressed() 方法中设置结果。

      Intent intent = new Intent();
      intent.putExtra("numberFromActivity2", 221);
      setResult(RESULT_OK, intent);
      finish(); // Finish second activity
      

      现在在 Activity1 中,您可以在 onActivityResult() 方法中获取这些数据:

      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
           if(requestCode == REQUEST_CODE) {
               int numberFromActivity2 = data.getIntExtra("numberFromActivity2" , 0); // 221
           }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-26
        相关资源
        最近更新 更多