Android 将数据从一个选项卡活动拉到另一个选项卡活动
我所读到的关于意图的所有内容都谈到了如何使用意图来推送数据,或者从一个活动开始另一个活动。我想从已经运行的活动中提取数据 位于的选项卡布局教程演示了我要做的事情。(我的应用程序正在进行一些工程计算,但教程代码与我的应用程序有很好的相似性。)教程创建了一个包含三个选项卡的应用程序,每个选项卡承载一个单独的活动 要展开教程中的示例,假设我在“艺术家”选项卡/活动中选择了一位艺术家。我希望能够选择相册选项卡/活动,并让它显示该艺术家的所有相册 在我看来,我需要用一种意图来做这件事。我找到的所有教程都假设我将在“艺术家”选项卡/活动中创建一个“查看相册”按钮,按下该按钮将执行启动相册活动并传递artistName的意图 我不想创建那个按钮。艺术家版式上的不动产是宝贵的,我有一个非常好的相册选项卡,HelloTabWidget活动已经包含了创建相册选项卡的意图 此外,用户会希望在相册和艺术家之间来回跳转,以更改艺术家选择,而选项卡是一种非常好的方法。没有必要用另一个按钮使UI复杂化 那么,当选择了Albums选项卡(或显示Albums布局)时,如何让Albums活动从Artists活动中提取artistName,而不是让Artists活动启动Albums并推送artistName 我可以从其他编程领域想到的等价物:Android 将数据从一个选项卡活动拉到另一个选项卡活动,android,android-intent,android-tabhost,android-tabactivity,Android,Android Intent,Android Tabhost,Android Tabactivity,我所读到的关于意图的所有内容都谈到了如何使用意图来推送数据,或者从一个活动开始另一个活动。我想从已经运行的活动中提取数据 位于的选项卡布局教程演示了我要做的事情。(我的应用程序正在进行一些工程计算,但教程代码与我的应用程序有很好的相似性。)教程创建了一个包含三个选项卡的应用程序,每个选项卡承载一个单独的活动 要展开教程中的示例,假设我在“艺术家”选项卡/活动中选择了一位艺术家。我希望能够选择相册选项卡/活动,并让它显示该艺术家的所有相册 在我看来,我需要用一种意图来做这件事。我找到的所有教程都假
- 全局变量。在Android devt中感到沮丧,对吗?如果它们确实存在,它们叫什么
- 一个getter,比如
artistName=Artists.getArtistName()代码>。我觉得这没那么容易
- 写入和读取文件,即大容量存储器或非易失性存储器。我不需要artistName值是永久的。每次用户启动应用程序时,它都将重置为null
那么,在安卓世界,它是如何实现的呢?我是否使用意图?如果是,如何使用?全局变量是正确的答案 我认为Java不鼓励它们的使用,但是这个窗口右边“相关”链接中出现的几个链接直接提到了它们。一个是,另一个是。两者都指出应用程序类是定义全局变量和方法的地方。有了这些新知识,我在Xoriant博客上找到了一篇文章,在StackOverflow answers上进行了扩展 最好先回顾一下这三个环节。我需要为那些作者所说的话添加一些提示
public class Something extends Application {
// Put application wide (global) variables here
// Constants are final, so they don't have to be private
// But other variables should be declared private;
// use getters/setters to access them
public final boolean FEET = false;
public final boolean METERS = true;
private boolean units = FEET;
@Override
public void onCreate() {
super.onCreate();
// Put any application wide (global) initialization here
}
// Put application wide (global) methods here
public boolean getUnits() {
return units;
}
public void setUnits(boolean whichOne) {
units = whichOne;
}
}
标记。
onCreate()
和每个将访问全局变量和方法的方法中使用getApplicationContext()
命令。我试图将其置于onCreate()之外
与我的活动范围内的其他变量一起使用,但它不起作用。将它放入每个方法中似乎是浪费,但emulator和Android设备都可以这样使用它。下面是一个示例,显示了我如何使用它:
public void fooBar() {
// Access to global variables and methods
final Something s = (Something)getApplicationContext();
// ...
// This next line demonstrates both a global method and a global variable
if (s.getUnits() == s.FEET) {
// do something with feet
} else {
// do something with meters instead
}
// ...
}