Android上的捆绑/意图

时间:2012-11-10 04:46:12

标签: android android-intent

我会承认的。我没有在Android上实现Bundles和Intents。

即使阅读了这么久,它也让我很困惑。

我在基本层面上理解:

意图 就像是同一个街区中另一个人的电话。

Bundles 是临时存储包,在退出应用程序时会被删除。

我不知道的是如何使用它们。我看到很多例子解释了如何立即将它们放入你的活动中,但根本没有进一步的解释。

http://stackoverflow.com/questions/768969/passing-a-bundle-on-startactivity/819427#comment17818750_819427这样的问题提供了代码和一个非常基本的解释,但没有详细说明如何使用它。

我正在使用该问题推荐的解决方案,但我的应用程序总是崩溃,因为我可能甚至不理解我实际在做什么。

是否有人可以提供或链接我的Android套装/意图的详细说明?

我已经看过Android Bundles和Intents的例子以及他们总是建议的代码块。

我不明白,是如何使用它。 您在哪里创建“创建新捆绑包”?

'{1}}中的'Example.class',它指向哪里?

编辑:CapDroid要求我提供代码,所以这里是 -

假设我现在有两个班,Intent mIntent = new Intent(this, ActivityA.class);ActivityA

ActivityB

该应用程序包含一个TextView(用作日期输入的微调器)。

现在我想要保存用户在ActivityB(原始输入数据)或ActivityA(从TextView获取信息)中选择的日期。最好是在ActivityB中,原始数据比字符串(TextView)更容易处理。

这是ActivityB:

public class ActivityA extends FragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.notify_main);

        // Do I create the bundle here? [APP CRASHES]
        // Intent mIntent = new Intent(this, ActivityA.class);
        // Bundle mBundle = new Bundle();
        // mBundle.extras.putString(key, value);
        // mIntent.putExtras(mBundle);
    }

    // onClick Execute Method (TextView acting as a Spinner)
    public void DatePicker(View v) {
        // Create a new DialogFragment (DateFragment)
        DialogFragment TimeFragment = new ActivityB();
        DateFragment.show(getSupportFragmentManager(), "DatePicker");

        // Opens up ActivityB, user selects date
        // ActivityB displays the selected date back in ActivityA
    }

    // onClick Execute Method (Button)
    public void Save(View v) {
        // Method to save all the data (ActivityB result, in future ActivityC, ActivityD, etc) in a database
        // String dayValue = getIntent().getExtras().getString(APP_KEY_DAY)
        // String mthValue = getIntent().getExtras().getString(APP_KEY_MTH)
        // String yearValue = getIntent().getExtras().getString(APP_KEY_YEAR)
    }
}

我认为用户可以将所选日期保存在Bundle中的ActivityB中,然后将Bundle传回ActivityA。这是因为我将拥有多个值,不仅仅是一个TextView

我希望这个解释有所帮助。

2 个答案:

答案 0 :(得分:0)

让我尽量让这个变得简单。

<强>意图: 这些基本上是在活动之间传递的消息。最常见的用例是开始一项新活动。

对于实例:ActivityA需要启动ActivityB,它会调用startActivity或更好地调用startActivityForResult

如果您想将一些数据从ActivityA传递到ActivityB。您可以在Intents中使用putExtra方法来执行此操作。这基本上使用了意图内的包。

另一个重要方面是如何将数据从ActivityB返回到ActivityA。在完成活动之前,我们在ActivityB中使用我们称之为setResult的内容。然后可以在onActivityResult

中访问数据

查看一些示例here

答案 1 :(得分:0)

现在您可能宁愿使用片段 LocalBroadcastManager 将信息从活动传递到片段,反之亦然。