@Override public void showData(String data,ActivitySetting activitySetting) { System.out.println("设置页面收到数据了!!!"); if(activitySetting==null){ System.out.println("空页面"); }else { System.out.println("有页面"); System.out.println(activitySetting); activitySetting.findViewById(R.id.data1111); }为什么我在接口中传入了activitysetting,但还是报错Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference
时间: 2024-04-15 22:29:51 浏览: 66
在你的代码中,你在接口方法中对 `activitySetting` 进行了空引用检查,但即使检查了空引用,仍然会报错 `Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference`。
这是因为接口方法中传入的 `activitySetting` 参数虽然不为空,但并不保证其中的 `Window` 对象不为空。在 Android 中,页面中的 `findViewById()` 方法是在 `Window` 对象上调用的,而不是在 `Activity` 或其他对象上调用。
因此,你需要确保传入的 `activitySetting` 对象是有效的且已经正确初始化,并且在调用 `findViewById()` 之前确保 `activitySetting.getWindow()` 不为空。
以下是修改后的示例代码:
```java
@Override
public void showData(String data, ActivitySetting activitySetting) {
System.out.println("设置页面收到数据了!!!");
if (activitySetting == null || activitySetting.getWindow() == null) {
System.out.println("空页面");
} else {
System.out.println("有页面");
System.out.println(activitySetting);
activitySetting.findViewById(R.id.data1111);
}
}
```
在修改后的代码中,我们增加了对 `activitySetting.getWindow()` 的空引用检查,以确保在调用 `findViewById()` 之前 `Window` 对象不为空。
请确保在调用 `showData()` 方法时,传入的 `activitySetting` 是有效的、已经初始化并且可见的页面对象。
阅读全文