如何从另一个活动调用和设置值到我的活动?

时间:2016-05-27 14:24:09

标签: android xml populate

我有一项名为" PurcahseActivity"并在那里显示用户交易的价值。 "总计:€1138.50"在附图中。 该值是在用户进行购买后生成的。 enter image description here

我还有另一项名为" SalesReportActivity"在这里,我需要在这个布局中显示相同的值。

enter image description here

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

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

implements View.OnClickListener

@Override
public void onCreate(Bundle savedInstanceState) {
    ImageButton imgButton =(ImageButton)findViewById(R.id.imageButton);
    imgButton.setOnClickListener(this);
}

@Override
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.imageButton:
            Toast.makeText(getApplicationContext(),"You download is resumed",Toast.LENGTH_LONG).show();
            break;
    }
}

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

3 个答案:

答案 0 :(得分:0)

最简单的方法:

  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);
    

答案 1 :(得分:0)

我知道有三种方法可以帮到你:

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

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

答案 2 :(得分:0)

通过活动传递信息的常规方法是在启动活动时使用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");
}

要将数据保存在两个以上的活动中,请使用SharedPreferences。如果需要更复杂的解决方案,还有其他方法,如数据库,文件甚至EventBus。