我会承认的。我没有在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 。
我希望这个解释有所帮助。
答案 0 :(得分:0)
让我尽量让这个变得简单。
<强>意图:强> 这些基本上是在活动之间传递的消息。最常见的用例是开始一项新活动。
对于实例:ActivityA需要启动ActivityB,它会调用startActivity或更好地调用startActivityForResult。
如果您想将一些数据从ActivityA传递到ActivityB。您可以在Intents中使用putExtra方法来执行此操作。这基本上使用了意图内的包。
另一个重要方面是如何将数据从ActivityB返回到ActivityA。在完成活动之前,我们在ActivityB中使用我们称之为setResult的内容。然后可以在onActivityResult
中访问数据查看一些示例here
答案 1 :(得分:0)
现在您可能宁愿使用片段和 LocalBroadcastManager 将信息从活动传递到片段,反之亦然。