Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.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
Java 将一个方法移动到另一个类会导致空指针异常_Java_Android - Fatal编程技术网

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();