静态值Android Studio
我有两项活动。和一个称为计数器的静态整数 因此,如果我按下活动“a”中的一个按钮,那么静态值Android Studio,android,android-activity,static-members,Android,Android Activity,Static Members,我有两项活动。和一个称为计数器的静态整数 因此,如果我按下活动“a”中的一个按钮,那么counter=counter+1 以下是活动a的代码: public static int counter = 0; cmdOk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { counter = counter + 1;
counter=counter+1
以下是活动a的代码:
public static int counter = 0;
cmdOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter = counter + 1;
if (counter == 5)
{
tagihan.txtShip1.setTextColor(Color.parseColor("#000000"));
tagihan.txtNilai1.setTextColor(Color.parseColor("#000000"));
tagihan.txtSupir1.setTextColor(Color.parseColor("#000000"));
}
}
这是活动b中的内容:
cmdSuccess.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
a.counter = a.counter + 1;
if (a.counter == 5)
{
tagihan.txtShip1.setTextColor(Color.parseColor("#000000"));
tagihan.txtNilai1.setTextColor(Color.parseColor("#000000"));
tagihan.txtSupir1.setTextColor(Color.parseColor("#000000"));
}
}
我的问题是,当我试着按下活动a中的一个按钮3次时,它工作正常。现在的值是3
但当我尝试按下活动b中的按钮时,该值将重新启动为0。实际上我没有破坏活动a
所以我想要的是,即使我从活动a或b中按下,值也会持续变化
有什么想法吗
编辑:
Bundle bundle = getIntent().getExtras();
String message = bundle.getString("message");
我已经编辑了代码。塔吉汉活动是我努力完成的。因此,当计数器为5时,tagihan活动会发生变化。不要使用静态数据,这是一种不好的方法,也不是常见的OOP开发方式,请尝试在活动之间传递数据 Act1
Intent intent = new Intent(activity2.this, activity1.class);
intent.putExtra("message", message);
startActivity(intent);
Act2:
Bundle bundle = getIntent().getExtras();
String message = bundle.getString("message");
Android development web对此进行了介绍:
不要使用静态数据,这是一种不好的方法,也不是一种常见的面向对象的开发方式,而是尝试在活动之间传递数据 Act1
Intent intent = new Intent(activity2.this, activity1.class);
intent.putExtra("message", message);
startActivity(intent);
Act2:
Bundle bundle = getIntent().getExtras();
String message = bundle.getString("message");
Android development web对此进行了介绍:
编辑后,我发现您需要一个“全局变量”,可以对所有活动进行读/写: 解决方案: 所有活动都嵌入到应用程序中,因此如果应用程序中有字段/成员,则可以使用标准设置器/获取器访问它们 你需要: 定义应用程序
public class MyApplication extends Application {
private int counterVariable;
public int counterVariable() {
return this.counterVariable;
}
public void setCounterVariable(int someVariable) {
this.counterVariable = someVariable;
}
}
将应用程序添加到清单:
<application
android:name="MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name">
编辑后,我可以看到您需要一个“全局变量”,可以对所有活动进行读/写: 解决方案: 所有活动都嵌入到应用程序中,因此如果应用程序中有字段/成员,则可以使用标准设置器/获取器访问它们 你需要: 定义应用程序
public class MyApplication extends Application {
private int counterVariable;
public int counterVariable() {
return this.counterVariable;
}
public void setCounterVariable(int someVariable) {
this.counterVariable = someVariable;
}
}
将应用程序添加到清单:
<application
android:name="MyApplication"
android:icon="@drawable/icon"
android:label="@string/app_name">
请使用以下代码: //避免静态值保持的一般形式:
public class SPDataHandler {
private Context mContext;
private SharedPreferences mPreference;
public SPDataHandler(Context context) {
this.mContext = context;
this.mPreference = mContext.getSharedPreferences("SAMPLE_SP", Context.MODE_PRIVATE);
}
/**
* COMMON SETTER FOR INTEGER DATA
*/
private void setIntegerData(String key, int value) {
SharedPreferences.Editor editor = mPreference.edit();
editor.putInt(key, value);
editor.commit();
}
/**
* COMMON GETTER FOR INTEGER SP DATA
*/
private int getIntegerSpData(String key, int defaultValue) {
return this.mPreference.getInt(key, defaultValue);
}
// Your Getter and Setter
public int getmCount() {
return this.getIntegerSpData("Count", 1);
}
public void setmCount(int cont) {
this.setIntegerData("Count", cont);
}
}
// Your Activity A
SPDataHandler handler = new SPDataHandler(this);
int count = handler.getmCount();
cmdOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count = count + 1;
handler.setmCount(count); // Change the logic based on your requirement
if (count == 5)
{
tagihan.txtShip1.setTextColor(Color.parseColor("#000000"));
tagihan.txtNilai1.setTextColor(Color.parseColor("#000000"));
tagihan.txtSupir1.setTextColor(Color.parseColor("#000000"));
}
}
// Your Activity B
SPDataHandler handler = new SPDataHandler(this);
int count = handler.getmCount();
cmdSuccess.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count = count + 1;
handler.setmCount(count); // Change the logic based on your requirement
if (count == 5)
{
tagihan.txtShip1.setTextColor(Color.parseColor("#000000"));
tagihan.txtNilai1.setTextColor(Color.parseColor("#000000"));
tagihan.txtSupir1.setTextColor(Color.parseColor("#000000"));
}
}
请使用以下代码: //避免静态值保持的一般形式:
public class SPDataHandler {
private Context mContext;
private SharedPreferences mPreference;
public SPDataHandler(Context context) {
this.mContext = context;
this.mPreference = mContext.getSharedPreferences("SAMPLE_SP", Context.MODE_PRIVATE);
}
/**
* COMMON SETTER FOR INTEGER DATA
*/
private void setIntegerData(String key, int value) {
SharedPreferences.Editor editor = mPreference.edit();
editor.putInt(key, value);
editor.commit();
}
/**
* COMMON GETTER FOR INTEGER SP DATA
*/
private int getIntegerSpData(String key, int defaultValue) {
return this.mPreference.getInt(key, defaultValue);
}
// Your Getter and Setter
public int getmCount() {
return this.getIntegerSpData("Count", 1);
}
public void setmCount(int cont) {
this.setIntegerData("Count", cont);
}
}
// Your Activity A
SPDataHandler handler = new SPDataHandler(this);
int count = handler.getmCount();
cmdOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count = count + 1;
handler.setmCount(count); // Change the logic based on your requirement
if (count == 5)
{
tagihan.txtShip1.setTextColor(Color.parseColor("#000000"));
tagihan.txtNilai1.setTextColor(Color.parseColor("#000000"));
tagihan.txtSupir1.setTextColor(Color.parseColor("#000000"));
}
}
// Your Activity B
SPDataHandler handler = new SPDataHandler(this);
int count = handler.getmCount();
cmdSuccess.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
count = count + 1;
handler.setmCount(count); // Change the logic based on your requirement
if (count == 5)
{
tagihan.txtShip1.setTextColor(Color.parseColor("#000000"));
tagihan.txtNilai1.setTextColor(Color.parseColor("#000000"));
tagihan.txtSupir1.setTextColor(Color.parseColor("#000000"));
}
}
不建议在活动之间共享静态动态变量,因为您对活动生命周期几乎没有控制权。您试图解决的问题是什么?您必须为这两个活动的使用完整源代码。您如何将活动a的实例传递给b。你能展示一下吗?我已经编辑了我的问题。请检查它。您可以将其存储在SharedReference中,也可以将其存储在应用程序类上。此外,不建议在活动之间共享静态和动态变量,因为您对活动生命周期几乎没有控制权。您试图解决的问题是什么?您必须为这两个活动的使用完整源代码。您如何将活动a的实例传递给b。你能展示一下吗?我已经编辑了我的问题。请检查它。您可以将其存储在SharedPreference中,也可以在应用程序类中进行