默认后退按钮在新创建的按钮上需要执行操作以及有关携带Bundle的疑问

时间:2012-10-10 10:49:01

标签: android android-intent

在我的应用程序中,我有3个活动A,B,C 我可以从A - > B - > C开始,这样我想将数据从A传送到B,将A的数据和B的数据传送到C,并将数据从活动C保存到数据库。

我的问题是

- >我在B中创建了一个后退按钮,点击它将转到活动A.我正在使用

  

Intent goReceive1 = new Intent(Receive2.this,Receive1.class);   startActivity(goReceive1);

但它正在清除以前在A中的Activity中输入数据。我希望这些数据在返回时存在。 我怎样才能实现这一目标?...

- >我有一个疑问是我使用Bundle将数据从A传递到B但是我没有在B中使用那些数据我需要C中A和B的那些数据,这样我就可以从C中将整个数据保存到DB中。

请有人帮我解决这个问题...... 在此先感谢..


我可以使用myActivity.onBackPressed()来自B - > A;以前的数据我能看到那里......

但是从B回来之前--->我在B中输入了一些数据。我再次从A - > B开始,然后B中的数据被清除了我不想丢失我输入的任何数据,直到我按活动C中的保存按钮。

有没有办法实现这一目标?...

2 个答案:

答案 0 :(得分:1)

调用意图回到之前的活动是完全错误的。你不应该这样做。

相反,在您在活动B中创建的后退按钮中,只需调用此方法,

onBackPressed();

这是在设备中按下专用后退按钮时执行的默认方法。

此外,如果您需要通过意图传递数据,则无法通过传递活动。您必须将其传递给下一个活动,然后传递给下一个活动。你不能直接从A传递给C.

但也许你可以使用Application类并从Activity A保存数据并在Activity C中检索它。

修改

扩展Application类并将所有数据保存在那里,然后在C中使用它。您必须学习如何使用Application类。这里的主要思想是存储在Application类中的数据在应用程序的运行时间内是持久的。它不会被清除。或者你甚至可以选择共享偏好。

答案 1 :(得分:0)

好的,这是你问题的解决方案。

您不希望丢失任何数据并共享所有活动中的所有数据。因此,最好的方法是扩展Application类并将所有数据保存在应用程序中,并且您可以访问应用程序的任何活动和服务中的应用程序中的数据。因此,您可以将其用作活动之间的沟通媒介。

了解有关应用程序实例的更多信息,请查看此链接

http://developer.android.com/reference/android/app/Application.html

这是http://www.helloandroid.com/tutorials/maintaining-global-application-state

的一个很好的例子