我的所有活动都是:
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));
}
我该如何解决?
答案 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类?