2011-07-15 30 views
5

我需要从另一个未扩展Activity的类中的主Activity调用setContentView(int)。如何从未扩展的类使用setContentView(int)活动

在我的自定义类中,我得到了private Context context; var从构造函数中传递的var,但我无法弄清楚如何使用context变量访问Activity方法。

回答

10

如果你的环境是活动类的一个实例,简单的类转换应该工作:

Activity a = (Activity) context; 
a.setContentView(R.layout.your_layout); 
+0

这应该工作,但我不知道为什么,布局没有被实际改变.. 我m调试和代码到达那里,显然它被执行,但它没有效果。 我只是在做: 活动a =(Activity)上下文; a.setContentView(R.layout.first); – sergi

+0

有了这个解决方案,例如我可以从TextView中获取文本,但我无法设置文本,因为它没有被设置。 – sergi

+0

@sergi您确定它是在onCreate活动阶段内执行的吗? –

1

一个解决方案(可能不是最优雅的)是将调用活动传递给另一个类,而不仅仅是上下文。

0

你将不得不在你正在使用的活动引用传递。

像这样的事情

class ActivityA extends Activity{ 
    @Override 
    public void onCreate(Bundle state){ 
     super.onCreate(state); 
     ClassA myclass = new ClassA(this); 
    } 
} 

然后A类将有:

class ClassA { 
    public ClassA(Activity yourActivity){ 
     ... Get your view here .... 
     yourActivity.setContentView(view); 
     ... do more things... 
    } 
} 
相关问题