Java 将一个方法移动到另一个类会导致空指针异常
这是我的代码的工作部分:Java 将一个方法移动到另一个类会导致空指针异常,java,android,Java,Android,这是我的代码的工作部分: public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().addContentView(getLayoutInflater().i
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().addContentView(getLayoutInflater().inflate(R.layout.customlayout, null),new FrameLayout.LayoutParams(
LayoutParams.MATCH_PARENT,
LayoutParams.WRAP_CONTENT ));
}
我想将代码的某些部分移动到另一个类文件中,但每当我创建基类并将代码移动到其中并尝试从派生类调用它时,我都会得到一个空指针
我编写了以下代码:
BaseClass.java
MainActivity.java
但是这个代码给了我一个空指针异常。因为
MainActivity
扩展了BaseClass
您已经有了一个BaseClass
实例,所以不需要创建一个。而不是打电话:
BaseClass bc = new BaseClass();
bc.showCustomAlert();
您只需调用
showCustomAlert()
在您的main活动中
当您编写扩展
时,您的意思是子类的每个对象也是第二个类的对象。因此,要调用showCustomAlert
您不需要创建全新的BaseClass
——您的main活动已经是BaseClass
发生NullPointerException是因为您正在创建新的BaseClass
——此新的BaseClass
对象没有与其关联的窗口,因此getWindow()
将返回null,然后尝试将其视为真正的窗口
你应该做的是移除
BaseClass bc = new BaseClass();
bc.showCustomAlert();
并将其替换为
showCustomAlert();
它将在BaseClass
中调用方法,但在MainActivity
对象上调用它。是否可以显示logcat???BaseClass扩展活动
。应避免在活动中使用新操作员
BaseClass bc = new BaseClass();
bc.showCustomAlert();
showCustomAlert();