我有2个标签--Tab1和Tab2,Tab1Activity和Tab2Activity 我想将值从Tab1Actvity传递给Tab2Activity但不想启动Tab2Activity。 当我尝试下面的代码时,它给出空值:
在Tab1Activity中
getParent().getIntent().putExtra("key", "value");
在Tab2Activity中
String valueString=getParent().getIntent().getStringExtra("key");
System.out.println("Testing.....: "+valueString);
答案 0 :(得分:5)
我真的不鼓励你通过扩展Application类来使用全局变量。如果您的应用程序转到后台(例如,通过电话),Android系统可能会决定终止您的应用程序。当呼叫结束时,您的应用程序和活动堆栈将被恢复,但您的活动状态将会丢失。
我建议你使用广播将数据发送到另一个活动。
在你的Tab1Activity中:
Intent dataIntent = new Intent();
dataIntent.setAction("com.your.app.DATA_BROADCAST");
dataIntent.putExtra("tag", "your data");
sendBroadcast(dataIntent);
Tab2Activity:
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String yourData = intent.getStringExtra("tag");
}
};
IntentFilter filter = new IntentFilter();
filter.addAction("com.your.app.DATA_BROADCAST");
registerReceiver(receiver, filter);
答案 1 :(得分:1)
您肯定想重新考虑使用“活动”作为标签的内容。更标准的方法是使用一个Activity,它使用Tabs仅在选择特定选项卡时显示部分布局。
Android文档有一个很好的工作示例,请查看Hello, TabWidget。
替代
如果由于某种原因您确实需要使用“活动”,则可以在它们之间传递信息,方法是在您使用的Intent中为extras包添加值以打开每个Activity,或者扩展Application类。 / p>
通过扩展Application类(并将其作为Singleton实现),您将获得一个在任何应用程序组件存在时都存在的对象,从而提供在应用程序组件之间存储和传输复杂对象数据的集中位置。
答案 2 :(得分:1)
您还可以使用静态类或SharedPreferences在选项卡之间进行数据传输。 正确的方法是将静态字段设置为创建选项卡的活动
public class greformanews extends TabActivity {
public static String JorgesysTitle;
...
...
...
所以在标签1中定义的活动中
@Override
protected void onPause() {
greformanews.JorgesysTitle = "JORGESYS =)";
super.onPause();
}
在标签2中定义的活动
//get value defined in Activity 1 !:)
String Title = greformanews.JorgesysTitle