不将数据发送到下一个活动,而是发送到之后的活动(使用 parcelable)

     2023-03-14     211

关键词:

【中文标题】不将数据发送到下一个活动,而是发送到之后的活动(使用 parcelable)【英文标题】:Send data not to next activity, but the one after (using parcelable) 【发布时间】:2018-04-22 17:10:17 【问题描述】:

假设在活动 A(得分)中,我创建了自定义类 Player 的实例。如何将这些对象发送到 Activity C,而无需在 Activity B (SelectGamemode) 中处理它们?这就是我通过 Parcelable 将对象从 Activity A 发送到 B 的方式。

btnNewRound = (Button) findViewById(R.id.btnNewRound);
btnNewRound.setOnClickListener(new View.OnClickListener() 
    @Override
    public void onClick(View v) 
        Intent intent = new Intent(Score.this, SelectGamemode.class);
        Bundle bundle = new Bundle();
        bundle.putParcelable("EXTRA_PLAYER_1", player1);
        bundle.putParcelable("EXTRA_PLAYER_2", player2);
        bundle.putParcelable("EXTRA_PLAYER_3", player3);
        bundle.putParcelable("EXTRA_PLAYER_4", player4);
        intent.putExtras(bundle);
        startActivity(intent);
    
);

现在我可以像这样在 Activity B 中访问我的 Player 对象:

player1= (Player)getIntent().getParcelableExtra("EXTRA_PLAYER_1");

然后在 Activity B 中,我基本上会使用与 Activity A 中相同的代码将 Player 对象发送到 Activity C,尽管我什至不使用 Activity B 中的对象。如何避免这种情况?谢谢!

【问题讨论】:

您可以使用共享首选项或数据库吗?随时随地获取它们。 使用共享首选项或数据库,或者通过第二个活动,可能不使用它,然后再到第三个,即使它显然效率较低 我去试试数据库,谢谢! 【参考方案1】:

听起来你目前有这个活动流程:

A -> B -> C

也许更好的流程是:

A -> B
B returns result to A
A -> C

我是从您的一些小问题中推断出来的,但听起来活动 A 负责创建玩家,活动 B 负责选择游戏模式。然后活动 C 获取玩家和选定的游戏模式,并对他们做一些事情。以下是一些伪代码,说明如何将我的建议应用于这种情况:

// in Activity A
public void startChooseGameMode() 
    Intent intent = new Intent(this, ActivityB.class);
    startActivityForResult(intent, 123); // 123 is an example requestCode


public void onActivityResult(int requestCode, int resultCode, Intent data) 
    super.onActivityResult(requestCode, resultCode, data);

    if (reqeustCode == 123) 
        if (resultCode == Activity.RESULT_OK) 
            GameMode mode = data.getParcelableExtra("EXTRA_GAME_MODE");

            Intent intent = new Intent(this, ActivityC.class);
            intent.putExtra("EXTRA_GAME_MODE", mode);
            intent.putExtra("EXTRA_PLAYER_1", player1);
            intent.putExtra("EXTRA_PLAYER_2", player2);
            intent.putExtra("EXTRA_PLAYER_3", player3);
            intent.putExtra("EXTRA_PLAYER_4", player4);

            startActivity(intent);
        
        else 
            // handle the error/cancellation
        
    


// in Activity B
public void chooseGameMode(GameMode mode) 
    Intent data = new Intent();
    data.putExtra("EXTRA_GAME_MODE", mode);

    setResult(Activity.RESULT_OK, data);
    finish();

在某些方面,这与您原来的问题是同一个问题,只是方向不同;现在活动 A 必须知道活动 B 的 GameMode 结果,即使它不直接使用它。我认为这没关系。您可以将 Activity A 视为负责收集启动 Activity C 所需的所有数据...也许在未来,您会以不同的方式创建玩家,并将该工作卸载到第四个 Activity。

【讨论】:

添加单击侦听器以映射标记列表并将数据发送到下一个活动?

】添加单击侦听器以映射标记列表并将数据发送到下一个活动?【英文标题】:AddingclickListenertomapmarkersListandsenddatatonextactivity?【发布时间】:2021-04-0311:07:10【问题描述】:我在一个应用程序中工作,我需要一次添加超过1个与其... 查看详情

Android 相机拍照并保存或发送到下一个活动

】Android相机拍照并保存或发送到下一个活动【英文标题】:AndroidCameraTakePictureandSAVEorsendtonextactivity【发布时间】:2013-06-2003:42:41【问题描述】:我是初学者,我需要帮助。如何用相机拍照并保存或发送到下一个活动?我尝试了... 查看详情

在android中单击列表活动时将列表项的静态图像和文本发送到下一个活动

】在android中单击列表活动时将列表项的静态图像和文本发送到下一个活动【英文标题】:Sendstaticimageandtextoflistitemtothenextactivitywhileclickonlistactivityinandroid【发布时间】:2011-09-2500:12:13【问题描述】:我有一个列表活动,我在其中... 查看详情

将活动之间的数据从列表视图传递到另一个活动

】将活动之间的数据从列表视图传递到另一个活动【英文标题】:Passingdatabetweenactivitiesfromlistviewtoanotheractivity【发布时间】:2013-08-1412:19:05【问题描述】:我正在尝试将数据从这个主要活动传递到另一个活动我成功地在活动之间... 查看详情

数据发送到活动的接口崩溃

】数据发送到活动的接口崩溃【英文标题】:CrashonInterfaceondatasendtoactivity【发布时间】:2017-08-1621:31:45【问题描述】:我有一个将执行asynctask的主要活动,然后使用接口将数据发送回活动,如下面的代码所示主要活动protectedvoidon... 查看详情

将 listView 数据从一个活动发送到另一个活动

】将listView数据从一个活动发送到另一个活动【英文标题】:SendlistViewdatafromoneactivitytoanother【发布时间】:2019-07-3101:06:08【问题描述】:我试图弄清楚如何从listView中获取数据,将其存储在一个数组中,并能够在另一个活动中访... 查看详情

将数据传递到上一个活动并使用相同的按钮移动到下一个(代码片段)

...ivity3。我在activity2上有一个按钮,点击该按钮我想将一些数据发送到activity1并转到activity3。我使用以下方法成功地将数据从2传递到1:button1.setOnClickListener(newView.OnClickListener()@OverridepublicvoidonClick(Vi 查看详情

如何将数据从活动发送到其父片段? [复制]

】如何将数据从活动发送到其父片段?[复制]【英文标题】:Howtosenddatafromanactivitytoitsparentfragment?[duplicate]【发布时间】:2016-06-1904:10:48【问题描述】:我有一个主要活动,其中有一个带有图像视图的片段。单击此图像视图时,将... 查看详情

将活动发送到后台而不完成

...将Activity发送到后台来实现什么?实际上我有需要缓存的数据。父活动 查看详情

如何将结果数据从广播接收器发送到活动

】如何将结果数据从广播接收器发送到活动【英文标题】:HowcanIsendresultdatafromBroadcastReceivertoActivity【发布时间】:2011-07-1209:06:31【问题描述】:我有一个调用广播接收器的活动。广播接收器等待并监听GPS。当侦听器获得新点时... 查看详情

如何在不打开的情况下将数据发送到另一个活动

】如何在不打开的情况下将数据发送到另一个活动【英文标题】:Howtosenddatatoanotheractivitywithoutopeningit【发布时间】:2014-09-2607:32:18【问题描述】:我希望能够在不打开活动b的情况下将数据从活动a传输到活动b,我希望稍后能够... 查看详情

在Android中将数据从活动发送到片段

】在Android中将数据从活动发送到片段【英文标题】:SenddatafromactivitytofragmentinAndroid【发布时间】:2019-02-2621:26:40【问题描述】:我有两节课。首先是活动,其次是我有一些EditText的片段。在活动中,我有一个带有异步任务的子类... 查看详情

单击通知时将数据发送到活动?

】单击通知时将数据发送到活动?【英文标题】:Senddatatoactivitywhenclickedonnotification?【发布时间】:2019-10-0716:24:23【问题描述】:点击通知时我正在打开一个活动。通知是从服务类激活的。我想向从通知打开的新活动发送数据,... 查看详情

将数据从片段发送到活动,无需任何事件处理或侦听器

】将数据从片段发送到活动,无需任何事件处理或侦听器【英文标题】:senddatafromfragmenttoactivitywithoutanyeventhandlingorlisteners【发布时间】:2018-09-0200:15:46【问题描述】:我有一个活动,我有一个按钮可以点击API。我在显示片段的... 查看详情

如何将字符串从一个活动发送到另一个活动

...在尝试制作一个应用程序来列出我所在地区的学校,并在数据库中制作了一个表格来包含这些学校。我制作了一个带有可点击项目的列表视图以列出学校的名称,当我点击该项目以移动到另一个活动并发送点击的学校名称以列出... 查看详情

从服务发送到活动的数据不起作用

】从服务发送到活动的数据不起作用【英文标题】:Datasendfromservicetoactivitynotworking【发布时间】:2021-12-0900:06:42【问题描述】:我在服务中调用一个函数来向活动发送数据,我为此使用本地广播管理器,下面是服务中的代码privat... 查看详情

如何将字符串数据从活动发送到片段?

】如何将字符串数据从活动发送到片段?【英文标题】:HowcanIsendstringdatafromactivitytofragment?【发布时间】:2021-01-0401:45:27【问题描述】:我有模块化应用程序。它的“app”模块有一个片段,它在不同的模块中调用活动。然后使用... 查看详情

在Android中将数据从基本活动发送到片段[重复]

】在Android中将数据从基本活动发送到片段[重复]【英文标题】:SendingdatafromBaseActivitytoFragmentinAndroid[duplicate]【发布时间】:2017-02-0607:24:11【问题描述】:我有一个关于片段的问题。场景是:登录后,我正在进行一个有3个片段的... 查看详情