跑步活动之间的沟通?

时间:2013-12-05 12:16:42

标签: java android android-activity

我是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语句中,该语句不起作用。我想这是因为它将创建活动的另一个实例,而不会影响当前/正在运行的实例。那么你将如何在两个正在运行的活动之间进行交流?

1 个答案:

答案 0 :(得分:4)

要将数据从Activity1发送到正在运行的Activity2,您必须完成以下步骤:

  1. 在Manifest.xml中设置启动模式&#34; singleTask&#34;对于Activity2

    <activity android:name="Activity2" android:launchMode="singleTask">

  2. 添加额外内容并从Activity1启动Activity2(如果之前启动了Activity2,则会将intent传递给现有实例)。

    Intent intent = new Intent(getContext(), Activity2.class);
    intent.putExtra("CHECK_POINT", checkPointData);
    startActivity(intent)
    
  3. 在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.
    }