Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.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
Java 通过其他活动修改计数_Java_Android - Fatal编程技术网

Java 通过其他活动修改计数

Java 通过其他活动修改计数,java,android,Java,Android,我做了一个活动,如果答案正确,增加一个计数器,如果答案错误,减少一个计数器。我有两个不同的计数器,我交替地修改它们 到目前为止,一切都正常,但我想补充一点,如果答案正确,就会打开一个新的活动。在这里,用户将决定是否增加计数器 到目前为止,我已经花了一天的时间在这方面,但没有成功。我正在手机上查看问题,因此无法滚动查看代码,因此可能我没有完全理解您的问题 我的建议是在新活动中添加一个观察者,观察者可以有两个方法{onIncremenet()和onDecremenet()},这两个方法将根据用户操作

我做了一个活动,如果答案正确,增加一个计数器,如果答案错误,减少一个计数器。我有两个不同的计数器,我交替地修改它们

到目前为止,一切都正常,但我想补充一点,如果答案正确,就会打开一个新的活动。在这里,用户将决定是否增加计数器


到目前为止,我已经花了一天的时间在这方面,但没有成功。

我正在手机上查看问题,因此无法滚动查看代码,因此可能我没有完全理解您的问题


我的建议是在新活动中添加一个观察者,观察者可以有两个方法{onIncremenet()和onDecremenet()},这两个方法将根据用户操作进行调用。在观察器的实现中,您可以同时持有对计数器的引用,这取决于用户操作的递增或递减。

因为您只需要两个计数器,我将提出一个非常简单的解决方案,而不是“花式”或“面向对象”,只是简单易懂

在主要活动的类中使用两个静态变量,例如:

public static int player1Score, player2Score;
在开始其他需要它们的活动之前设置它们:

player1Score = player1Info.playerScore;
player2Score = player2Info.playerScore;
startActivityForResult(i, 1);
在其他活动中直接使用它们。在onActivityResult()中写回它们的值:

在回写之前,您还可以检查其值是否已更改:

if ( player1Info.playerScore != player1Score )
    ...
就这些。忘记所有像“观察者设计范式”这样的复杂句子吧,它们在这里除了浪费时间之外什么都不能给你

编辑:


如果出于某种原因,您不想使用静态变量,您可以对应用程序(android.app.Application)进行子类化,并在其中声明普通变量。然后在每个活动中,您都可以通过getApplication()获取应用程序对象,并在其中访问常用变量。

包括一些代码将被证明是最有用的。@mre代码太长了。。。我不知道该怎么办include@Alex使用@mre我添加了代码。。。代码的某些部分只是为了测试。我终于做到了。谢谢。observer是一个内置类,或者我必须创建它?我所说的observer是指observer设计范例,所以是您编写的接口和实现。类似于接口userantractivitylistener{void onIncremenet();void onDecrement();},然后按照我在回答中建议的方式实现它。我想我将从头开始。我感到困惑。我将尝试重新思考代码。
if ( player1Info.playerScore != player1Score )
    ...