【问题标题】:Android Is An Intent Unique To An Activity or GlobalAndroid 是 Activity 或全局唯一的 Intent
【发布时间】:2017-08-03 18:55:58
【问题描述】:

我很好奇意图是否是特定活动所独有的。

例如,我当前对 Intent 的使用是从 Activity 1 中为其提供一些数据并将其传递给 Activity 2。

Intent intent = new Intent(this, MainActivity.class);
        intent.putExtra("id", id.getText().toString());
        intent.putExtra("weight", weight.getText().toString());
        intent.putExtra("zipTo", zipTo.getText().toString());
        intent.putExtra("locationId", locationID.getSelectedItem().toString());
        intent.putExtra("imageNum", 1);
        startActivity(intent);

现在,在 MainActivity 中,我可以使用以下代码检索从前一个活动传递的数据。

Bundle bundle = getIntent().getExtras();
        id = bundle.getString("id");
        weight = bundle.getString("weight");
        locationID = bundle.getString("locationID");
        zipTo = bundle.getString("zipTo");

在MainActivity中做了一些工作后,我需要返回上一个将我们发送到MainActivity的活动(并且我需要将最初发送的数据返回)。

我是否需要重新定义一个意图,并在 MainActivity 中为每个值再次执行“intent.putExtra”,然后再将其发送到第一个 Activity?或者意图是全局的,一旦在一个活动中定义,我就可以通过 getIntent().getExtras() 在其他活动中使用它?

【问题讨论】:

  • “或者意图是全局的”——不,不是。

标签: java android android-intent


【解决方案1】:

意图不是全局的。您只能访问通过意图传递的活动中的捆绑包。

你应该使用 startActivityForResult(intent)。这提供了您正在寻找的行为。

Getting a result from an activity

这个想法是你开始新的意图。在这种情况下,'MainActivity'。完成 MainActivity 中的逻辑后,您可以使用上述策略将结果传递回启动 MainActivity 的活动。

【讨论】:

  • 哇,不敢相信我掩盖了这一点。这正是我正在寻找的。谢谢!
【解决方案2】:

从一个活动到另一个活动通过意图传递的信息不是全局的,全局是共享的首选项和信息,即存储在 manifest.xml 中的元数据。

【讨论】:

    猜你喜欢
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多