java - 运行 Activity 之间的沟通?

标签 java android android-activity

我是 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,您必须完成以下步骤:

  1. 在 Manifest.xml 中为 Activity2 设置启动模式“singleTask”

    <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.
    }
    

关于java - 运行 Activity 之间的沟通?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20399823/

相关文章:

java - 我们可以在java中有一个整数数组的优先级队列吗

android - 如何制作用于播放 MP3 文件的 intent-filter?

Android,在恢复时动态创建的 editTexts 的 id 和 View 的清晰文本值

java - 在另一个 if 语句中获取库存

java - 将 int 转换为字节数组

java - JComboBox ActionEvent 在 Java 中返回值

android - NetworkInfo.isConnectedOrConnecting() 在服务中返回 FALSE

android - Android fragment 问题

java - 启动服务后 Activity 挂起

java - 无法使用 Android PhotoView Activity