有没有一种方法可以将我的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; 
} 
} 
+2

为什么要改变你不会显示的活动的UI?保存第二个活动的结果并更新onResume()方法中的第一个活动 – grunk 2012-02-22 08:04:39

+0

为什么我认为这会增加一些存储(此外还要维护存储的对象),并且每次调用onResume() ,我相信在SecondActivity的这一刻,更好的方式会改变FirstActivity的UI,你有什么建议? – 2012-02-22 08:19:34

+1

正如grunk所说,创建一个对象并将其传回给您的第一个活动,以便它在onResume中更改其内容。传递每个活动的上下文意味着活动仍在内存中,并且每个对象都附着在它上面。坏 – Blundell 2012-02-22 08:31:28

不要试图直接传递上下文,而你应该用startActivityForResult启动第二个活动,并setResult在第二个活动与getActivityResult在第一个活动的组合,将数据回传在一个捆绑包中,第一个活动会更新自己的用户界面,并且还可以避免@grunk和@Blundell提到的问题。