Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从不扩展活动的类使用setContentView(int)_Android_Android Activity_Android Context - Fatal编程技术网

Android 如何从不扩展活动的类使用setContentView(int)

Android 如何从不扩展活动的类使用setContentView(int),android,android-activity,android-context,Android,Android Activity,Android Context,我需要从另一个不扩展活动的类的主活动调用setContentView(int) 在我的自定义类中,我得到了私有上下文变量,但我不知道如何使用上下文变量访问活动方法。一种解决方案(可能不是最优雅的)是将调用活动传递给另一个类,而不仅仅是上下文。如果您的上下文是Activity类的实例,简单的类转换应该可以工作: Activity a = (Activity) context; a.setContentView(R.layout.your_layout); 您必须传入对正在使用的活动的引用 像这样

我需要从另一个不扩展活动的类的主活动调用setContentView(int)


在我的自定义类中,我得到了
私有上下文变量,但我不知道如何使用
上下文
变量访问活动方法。

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

如果您的上下文是Activity类的实例,简单的类转换应该可以工作:

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

您必须传入对正在使用的活动的引用

像这样的

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...
   }
}

这应该行得通,但我不知道为什么,布局实际上没有改变。。我正在调试,代码到达了那里,显然它已经被执行了,但是没有效果。。我只是在做:活动a=(活动)上下文;a、 setContentView(R.layout.first);例如,使用此解决方案,我可以从TextView中获取文本,但我无法设置文本,因为它没有被设置。@sergi您确定它是在onCreate活动阶段执行的吗?在我的主活动(在onCreate中)中,我调用setContentView(int),这样就可以了。另外,在我的主活动的onCreate中,我创建了一个helper类的对象,在这个helper类中,我最终需要从我的主活动调用setContentView(int)。helper类内的这个setContentView(int)调用没有任何作用。不过,我设置的视图来自错误的线程。。但我不知道它为什么没有坠毁。