Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在onCreate()方法中调用变量值的方法时,如何保持变量值不变?_Android_Android Activity - Fatal编程技术网

Android 在onCreate()方法中调用变量值的方法时,如何保持变量值不变?

Android 在onCreate()方法中调用变量值的方法时,如何保持变量值不变?,android,android-activity,Android,Android Activity,我正在创建一个简单的android应用程序,它显示在另一个活动中单击按钮的次数。我的问题是,我在第一个活动中使用相同的方法,即按钮的onClick()执行intent和count increment。我的问题是,当我回到第一个片段时,计数正在重置。我现在应该做什么 这是我的第一个activity onCreate()方法 这是我的第二个activity onCreate()方法 Android中的活动是由系统创建的,当您启动它时,您不应该“新建”活动。 在活动之间共享数据,您可以在第一个活动中使

我正在创建一个简单的android应用程序,它显示在另一个活动中单击按钮的次数。我的问题是,我在第一个活动中使用相同的方法,即按钮的onClick()执行intent和count increment。我的问题是,当我回到第一个片段时,计数正在重置。我现在应该做什么

这是我的第一个activity onCreate()方法

这是我的第二个activity onCreate()方法


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);
        }
    });
}