【问题标题】:Using values in different activities在不同的活动中使用价值观
【发布时间】:2017-06-04 16:07:38
【问题描述】:

我正在尝试构建一个应用程序,该应用程序的开始屏幕带有通向几个不同活动的按钮。在开始屏幕之后的一个活动中,我得到了我想在另一个后续活动中使用的 int 值。从我所看到的情况来看,通常使用捆绑包和意图在活动之间传递值,如下所示:

意图 i = new Intent(this, ActivityTwo.class); AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete); String getrec=textView.getText().toString();

//创建捆绑包 捆绑捆绑 = 新捆绑();

//将数据添加到捆绑包 bundle.putString(“stuff”, getrec);

//将bundle添加到intent中 i.putExtras(bundle);

//触发第二个活动 开始活动(i);

并在第二个中添加:

//获取捆绑包 捆绑包 = getIntent().getExtras();

//提取数据... String stuff = bundle.getString(“stuff”);

但是我不希望我的第三个活动从第二个开始,有没有办法在不开始另一个将要使用的活动的情况下发送一个值?如果不是,我应该将值传递给开始屏幕活动并从那里传递给另一个,如果是这样,如何?

【问题讨论】:

  • 有多种方法,具体取决于数据的类型和大小。单例、共享首选项、文件、数据库等可能都是合适的。

标签: java android android-intent


【解决方案1】:

有几种方法可以在 Android 中存储数据。根据数据类型的不同,可能适用不同的情况:

1。共享偏好

将数据存储在键值对中。这是一些代码

保存价值:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);
  editor.commit();

检索值:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);

2。 SQLite 数据库

这是一个用于存储信息的关系数据库Here's一个教程。

我已经详细介绍了适用于这种情况的两个,但您可以在此处查看其余部分 https://developer.android.com/guide/topics/data/data-storage.html

【讨论】:

    【解决方案2】:

    您可以声明公共静态变量并在应用程序的任何位置访问它,但尝试使用 .另一种方法是您可以使用 sharedpreference 来存储该值

    【讨论】:

      【解决方案3】:

      您似乎拥有想要在整个应用程序中持久保存的数据。

      读入 SQLite 数据库或领域数据库。

      我有更多使用 Realm 数据库的经验,所以这是我的选择。

      https://sqlite.org/

      https://realm.io/docs/java/latest/

      【讨论】:

        猜你喜欢
        • 2013-11-18
        • 2021-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-05
        • 1970-01-01
        相关资源
        最近更新 更多