有没有一种方法可以将我的FirstActivity上下文传递给我的SecondActivity上下文或任何其他活动,以在我的第一个活动中进行更改
问题描述:
我有我的FirstActivity,其中有部件/组件棍棒内FirstActivity(切换btn,复选框等),所有这些都是可以改变的(非静态的)。有没有一种方法可以将我的FirstActivity上下文传递给我的SecondActivity上下文或任何其他活动,以在我的第一个活动中进行更改
现在我开始SecondActivity执行一些任务,并移动到ThirdActivity
我的问题是,我怎样才能把我的FirstActivity到SecondActivity的背景下,这样我可以根据结果在FirstActivity的UI变化的SecondActivity,然后可以简单地移动到ThirdActivity?
我们可以将一个活动的上下文传递给另一个活动。 我试过StartActivityForResult(),我不认为在这里使用它。
我在这里错过了什么,我如何从第二个活动访问另一个活动的组件/小部件?
在这里,我创建了一个类来保存我的FirstActivity上下文,并使用My SecondActivity获取输入的相同上下文,它以这种方式工作,但这是我们做到这一点的唯一方法吗?我们有更直接的东西吗?
public class ContextHolder {
static Context c;
static void setContext(Context context){
c=context;
}
static Context getContext(){
return c;
}
}
答
不要试图直接传递上下文,而你应该用startActivityForResult启动第二个活动,并setResult在第二个活动与getActivityResult在第一个活动的组合,将数据回传在一个捆绑包中,第一个活动会更新自己的用户界面,并且还可以避免@grunk和@Blundell提到的问题。
为什么要改变你不会显示的活动的UI?保存第二个活动的结果并更新onResume()方法中的第一个活动 – grunk 2012-02-22 08:04:39
为什么我认为这会增加一些存储(此外还要维护存储的对象),并且每次调用onResume() ,我相信在SecondActivity的这一刻,更好的方式会改变FirstActivity的UI,你有什么建议? – 2012-02-22 08:19:34
正如grunk所说,创建一个对象并将其传回给您的第一个活动,以便它在onResume中更改其内容。传递每个活动的上下文意味着活动仍在内存中,并且每个对象都附着在它上面。坏 – Blundell 2012-02-22 08:31:28