我是 Android 新手,目前正在开发一个任务/寻宝应用程序。它是一个原型(prototype),将在现场进行评估,因此,如果应用程序在测试期间崩溃,我想实现某种作弊来跳过检查点。
我的应用程序的工作方式是,当您选择一个任务时,将加载一个 Activity 来处理所有检查点和用户位置(ActivityAdapter.java)。此 Activity 将打开不同的导航工具 Activity ,并使用 Intent 根据下一个检查点将信息传递给它们。我在应用程序中实现了一个长按事件,我想激活跳过/作弊。我的问题是我不知道如何做到这一点。
ActivityAdapter.java的位置改变事件:
public void onLocationChanged(Location location) {
location.distanceBetween(location.getLatitude(), location.getLongitude(), lat, lng, dist);
if (dist[0]<= 10) {
if (cid == checkpoints.size()) {
Intent intent = new Intent(ActivityAdapter.this, SuccessActivity.class);
intent.putExtra("title", checkpoints.get(cid).get("title"));
startActivity(intent);
} else {
new loadAndStartQuest().execute();
}
}
}
loadAndStartQuest() 只是找到下一个检查点并启动正确的 Activity (导航工具)。我尝试创建 ActivityAdapter 的对象并设置一个变量并将其添加到 if 语句中,但这不起作用。我想这是因为它将创建该 Activity 的另一个实例,并且不会影响当前/正在运行的实例。那么两个正在运行的 Activity 之间如何进行通信呢?
最佳答案
要将数据从 Activity1 发送到正在运行的 Activity2,您必须完成以下步骤:
在 Manifest.xml 中为 Activity2 设置启动模式“singleTask”
<activity android:name="Activity2" android:launchMode="singleTask">
添加额外内容并从 Activity1 启动 Activity2(如果 Activity2 之前启动过,则 Intent 将发送到现有实例)。
Intent intent = new Intent(getContext(), Activity2.class); intent.putExtra("CHECK_POINT", checkPointData); startActivity(intent)
重写 Activity2 中的 onNewIntent() 方法
protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); onNewCheckPoint(); } private void onNewCheckPoint(){ Intent intent = getIntent(); Bundle extras = intent.getExtras(); //in this moment, you can process data, like you want. }
关于java - 运行 Activity 之间的沟通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20399823/