Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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-java将全局上下文设置为另一个类_Java_Android_Activerecord_Android Context - Fatal编程技术网

Android-java将全局上下文设置为另一个类

Android-java将全局上下文设置为另一个类,java,android,activerecord,android-context,Java,Android,Activerecord,Android Context,第一个问题是我有一个500行的java类。那太糟糕了,所以我想把他们分开。我在另一个stackoverflow线程中找到了解决方案,我们可以将主类上下文传递给另一个类 //main class Public class Main{ @Override Public void onCreate(Bundle inst) { Super.onCreate(inst); ClassB bclass = new ClassB(this); bclass.setLayout();

第一个问题是我有一个500行的java类。那太糟糕了,所以我想把他们分开。我在另一个stackoverflow线程中找到了解决方案,我们可以将主类上下文传递给另一个类

//main class
Public class Main{
 @Override
 Public void onCreate(Bundle inst)
 {  
  Super.onCreate(inst);
  ClassB bclass = new ClassB(this);
  bclass.setLayout();
 }
}

//B class
Public class ClassB{
 Activity act1;
 Public ClassB(Activity act)
 {
  act1 = act;
 }
 Public void setLayout()
 {
  this.act1.setContentView(R.layout.lay);
 }
}
好的,这就是工作。但是如何让act1成为我们的主要背景呢?所以每次我想从ClassB调用setContentView时,我不需要再次使用act1

编辑1: 我希望的是,我希望将act1作为ClassB的默认上下文。因此,当我从ClassB调用setContentView时,它直接调用Main.setContentView


因为如果我只是从ClassB调用setContentView,我会得到NullPointerException。这是有意义的,因为ClassB没有上下文

不知道为什么要这样做。有一些方法可以减少单个java类的行数,而不是将UI引用保留在其他类中或由其他类呈现UI。您可以将您的业务逻辑(而不是UI)封装在其他类中,这样可以提高代码的可读性,或者在您的情况下,如果您有多个具有类似行为的活动,您可以创建一个基本抽象活动类,并将所有基本代码放入其中。

@LAD不幸的是,这正是我现在要寻找的。在我的代码中,我想从ClassB调用setContentView,而不必键入此.act1.setContentView()。将活动函数作为函数或对
活动的弱引用来执行可能更为简洁。让第二个类具有成员字段
活动
上下文
非常容易出现内存泄漏问题。@Bryan Dormaier。那么你想说this.act1.setContentView已经很好了?不过我认为你不需要调用
this
。我认为
act1.setContentView()应该有用。我是说,在另一节课上保持对你的
活动的引用会导致记忆问题。通过让您的活动包含与UI相关的任何代码(如
setContentView()
),并将非UI逻辑放在单独的类(如演示者)中,可以更清晰地保持分离。您的二级类可以通过接口进行通信,该接口的占用空间比存储对
活动的引用要小