我是android的新手,目前正在开发一个任务/ tresurehunt应用程序。它是一个原型,将在现场进行评估,因此如果应用程序在测试期间崩溃,我希望实现某种欺骗以跳过检查点。
我的应用程序的工作方式是,当您选择任务时,将加载一个活动来处理所有检查点和用户位置(ActivityAdapter.java)。此活动将打开不同的导航工具活动,并根据使用intent的下一个checkpont将信息传递给它们。我在应用程序中实现了长按事件我想激活跳过/作弊。我的问题是我无法弄清楚如何做到这一点。
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()只需找到下一个检查点并启动正确的活动(navigationtool)。我尝试创建ActivityAdapter的对象并设置一个变量并将其添加到if语句中,该语句不起作用。我想这是因为它将创建活动的另一个实例,而不会影响当前/正在运行的实例。那么你将如何在两个正在运行的活动之间进行交流?
答案 0 :(得分:4)
要将数据从Activity1发送到正在运行的Activity2,您必须完成以下步骤:
在Manifest.xml中设置启动模式&#34; singleTask&#34;对于Activity2
<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.
}