Android 在onCreate()方法中调用变量值的方法时,如何保持变量值不变?
我正在创建一个简单的android应用程序,它显示在另一个活动中单击按钮的次数。我的问题是,我在第一个活动中使用相同的方法,即按钮的onClick()执行intent和count increment。我的问题是,当我回到第一个片段时,计数正在重置。我现在应该做什么 这是我的第一个activity onCreate()方法 这是我的第二个activity onCreate()方法Android 在onCreate()方法中调用变量值的方法时,如何保持变量值不变?,android,android-activity,Android,Android Activity,我正在创建一个简单的android应用程序,它显示在另一个活动中单击按钮的次数。我的问题是,我在第一个活动中使用相同的方法,即按钮的onClick()执行intent和count increment。我的问题是,当我回到第一个片段时,计数正在重置。我现在应该做什么 这是我的第一个activity onCreate()方法 这是我的第二个activity onCreate()方法 Android中的活动是由系统创建的,当您启动它时,您不应该“新建”活动。 在活动之间共享数据,您可以在第一个活动中使
Android中的活动是由系统创建的,当您启动它时,您不应该“新建”活动。 在活动之间共享数据,您可以在第一个活动中使用
Intent.putExtra(“myCount”,count)
,在第二个活动中使用Intent.getInt(“myCount”)
您还可以使用应用程序(定义您自己的应用程序类扩展应用程序类,并在应用程序中定义计数,别忘了将您的应用程序放在AndroidManifest.xml中),您可以使用((App)Context.getApplication).count
访问活动/服务中的“计数”等
您应该知道的相关方法是
startActivityForResult
和onActivityResult
,此相关方法使您有机会从第二个活动中获取数据。您需要使用onSaveInstanceState()保存和检索值,在onCreate()中,从保存的状态检索值:
我们应该使变量保持静态 在这里,我将count变量设置为静态变量。在我的问题上,我没有这样做
Button Next;
TextView NxtTextView;
Intent nextIntent;
public static int count = 0;
MainActivity2 mainActivity2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Next = findViewById(R.id.Nxtbutton);
NxtTextView = findViewById(R.id.NxtCount);
nextIntent = new Intent(getApplicationContext(), MainActivity2.class);
next();
preClickCount();
}
public void next() {
mainActivity2 = new MainActivity2();
Next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
count++;
Log.i(TAG, "onClick: " + count);
startActivity(nextIntent);
}
});
}
谢谢@Vicky,但我已经找到了一个简单的解决方法。@DpD请为将来可能有同样问题的人发布您的答案:)很高兴这对您有用!请注意,有时操作系统会清除静态引用(例如,当你最小化应用程序时,会说“打电话”、“拍照”之类)。因此,从长远来看,您可能希望研究savedInstance的内容。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Next = findViewById(R.id.Nxtbutton);
NxtTextView = findViewById(R.id.NxtCount);
nextIntent = new Intent(getApplicationContext(), MainActivity.class);
next();
preClickCount();
}
public void next() {
mainActivity = new MainActivity();
Next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
count++;
Log.i(TAG, "onClick: " + count);
startActivity(nextIntent);
NxtTextView.setText("Previous Button Count Is " + mainActivity.count);
}
});
}
Button Next;
TextView NxtTextView;
Intent nextIntent;
public static int count = 0;
MainActivity2 mainActivity2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Next = findViewById(R.id.Nxtbutton);
NxtTextView = findViewById(R.id.NxtCount);
nextIntent = new Intent(getApplicationContext(), MainActivity2.class);
next();
preClickCount();
}
public void next() {
mainActivity2 = new MainActivity2();
Next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
count++;
Log.i(TAG, "onClick: " + count);
startActivity(nextIntent);
}
});
}