传递变量,更新变量,然后将更新的变量发送到原始活动

时间:2016-01-01 02:38:11

标签: android variables android-intent android-activity int

所以我一直在使用getIntent方法将我的原始int值(设置为10)发送到第二个类。

Intent webClick = new Intent(this, WebsearchIAP.class);
webClick.putExtra("cred", cred);
startActivity(webClick);

然后,我通过从中减去1来更新变量。

Intent get = getIntent();
int cred = get.getIntExtra("cred", 10);

public void buyClick(View view) {
    sCredits.setText(cred - 1);
}

然后,我想通过这样做将它发回给我的MainActivity。

public void backClick(View view) {
    Intent close = new Intent(this, MainActivity.class);
    close.putExtra("cred", cred);
    startActivity(close);
}

回到我的MainActivity,这就是我想要做的。

@Override
public void onResume() {
    super.onResume();
    Intent close = getIntent();
    int cred = get.getIntExtra("cred", [VALUE OF CRED IN PREVIOUS ACTIVITY]);
}

我的问题是getIntent方法需要" cred"的数值,如果我只使用该方法一次就没什么大不了的,但我想每次这个应用程序恢复时都使用它主屏幕,因此调用onResume。那么,我如何设置我的应用程序以取得" cred"在以前的活动中,无论它是什么,在一种方法中?

2 个答案:

答案 0 :(得分:0)

也许你可以使用SharedPreferences。它通常用于存储应用程序首选项,并在应用程序中共享。

首先,在您的活动中获取您的SharedPreferences:

private SharedPreferences sp = getSharedPreferences("foo", MODE_PRIVATE);

然后设置并输出如下值:

int cred = sp.getInt("CRED", 10);        // Put this statement in onResume
sp.edit().putInt("CRED", cred).apply();

您可以获取SharedPferences here的官方文档。

答案 1 :(得分:0)

有一种最好的方法可以做到这一点。首先使用public static void shuffle(List<?> list, Random rnd) { for (int i = list.size(); i > 1; i--) swap(list, i - 1, rnd.nextInt(i)); } 代替startActivityForResult()向第二个活动发送意向。然后从第二个Activity使用startActivity()将值发送回第一个Activity。在第一个活动中覆盖setResult()以获取更新的值。 例如:

onActivityResult()