如何通过不同的活动不断改变价值?

时间:2018-04-19 18:35:36

标签: android

我的所有活动都是:

public class XXXXXX extends HomePage {}

在我的HomePage活动中将是:

public class HomePage extends AppCompatActivity {int value;}

虽然我有点像按钮那样的值会添加1:

public class XXXXXX extends HomePage {
    int times;
    button Next;

    public void onClick(View view) {
        switch (times) {
            case 0:
                value += 1;
                times++;
                break;

            case 1:
                startActivity(new Intent(XXXXXX.this, Showvalue.class));
                break;

经过一些活动后,当我尝试在某些活动后获得该值时,它将显示" 0":

public class Showvalue extends Homepage {
    TextView textview;
    textview = (TextView) findViewByid(R.id.textview);
    textview.setText(String.valueOf(value));
}

我该如何解决?

2 个答案:

答案 0 :(得分:1)

这是因为每个活动都放在堆栈上,并带有自己的value副本。

您需要做的是在Application类中保留一个静态值,以便只有一个变量副本可供全局使用。

创建一个Application类:

public class MyApplication extends Application {

    private static int value;

    @Override
    public void onCreate() {
        super.onCreate();
        value = 0;
    }

    public static int getValue() {
        return value;
    }

    public static void setValue(int newValue) {
        value = newValue;
    }
}

AndroidManifest.xml中指定MyApplication类:

  <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:name=".MyApplication"
    android:theme="@style/AppTheme">

现在在一个activity中,使用此设置值:

MyApplication.setValue(1);

...而在另一个获取value时,请使用:

int value = MyApplication.getValue();

...或重新重置。无论你需要什么。

希望这有帮助!

答案 1 :(得分:0)

所以你只想在每个活动中都有相同的int值?如果是这样,为什么不在基础活动中将其设置为静态或转移到单独的utils类?