【问题标题】:How to call and set value from another activity to my activity? [duplicate]如何从另一个活动调用和设置值到我的活动? [复制]
【发布时间】:2016-05-27 23:39:07
【问题描述】:

我有一个名为“PurcahseActivity”的活动,用户交易的价值显示在那里。附图中的“总计:1138.50 欧元”。 该值是在用户进行购买后生成的。

我有另一个名为“SalesReportActivity”的活动,在这里,我需要在此布局中显示相同的值。

实现这一目标的最佳方法是什么?

这是我的 PurchaseLayout.xml。 'net_total' 是显示值的 ID。

<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="64dp"
    android:layout_gravity="center_horizontal" >

    <LinearLayout
        android:id="@+id/net_total_value"
        android:layout_width="85dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="5dp"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/net_total"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:textColor="@color/dark_grey_standard_text"
            android:textSize="15sp"
            android:textStyle="bold" />
    </LinearLayout>

</TableRow>

我进行了很多研究,但找不到针对这个特定问题的任何解决方案。基本上,我只想在我的 salesReport 中显示相同的值。

【问题讨论】:

  • 这两个是独立的活动?
  • 如何从第一个活动导航到第二个活动?是在单击“Pusrchase”按钮之后还是类似的东西?
  • 是的,它们是两个独立的活动。当用户点击“购买”按钮时,会显示最终金额。在报表活动中,只显示产品名称,我也想显示 Total 值。
  • 您也可以使用onActivityResult()setResult() 进行归档。

标签: android xml populate


【解决方案1】:

最简单的方法:

  1. 在 PurcahseActivity 中,用户完成购买后,将此值保存到 sharedPreferences。

    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    sharedPreferences.edit().putFloat("total", value).apply();
    
  2. 在 SalesReportActivity 中加载这个值:

    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    float value = sharedPreferences.getFloat("total", 0f);
    

【讨论】:

    【解决方案2】:

    据我所知,有 3 种方法可以帮助您:

    • 如果您在第一个活动之后开始第二个活动,您可以 使用 Intent.putExtra 并在第二个活动中检索该值
    • 如果该值将在多个地方重复使用,它会 将其实际保存在 SharedPreferences 中然后获取是有意义的 随处可见
    • 如果您想在任意两个组件之间异步获取和发送该值但又不想保存它,您可以使用一个名为EventBus 的优秀库

    我没有给你任何代码,因为这 3 种方法中的每一种都是众所周知的并且被多次解释。您可以随时自行了解如何使用SharedPreferencesIntents。就EventBus 而言,它有很好的文档,但如果您在使用它时仍有任何问题,请随时联系我或在这里写一个问题。

    【讨论】:

      【解决方案3】:

      通过 Activity 传递信息的正常方式是在启动 Activity 时使用 Intent。在源活动中,

      Intent intent = new Intent(this, TargetActivity.class);
      intent.putExtra("YOUR_FLAG", yourValue);
      startActivity(intent);
      

      然后在您的 TargetActivity 中,例如在 onCreate(...)

      float yourValue;
      Bundle extras = getIntent().getExtras();
      if (extras != null) {
          yourValue = extras.getFloat("YOUR_FLAG");
      }
      

      要在超过 2 个活动中保留您的数据,请使用 SharedPreferences。如果需要更复杂的解决方案,还有其他方法,如数据库、文件甚至 EventBus。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-20
        相关资源
        最近更新 更多