.findViewById() returns 空
.findViewById() returns null
所以,我正在尝试在我的 Android 应用程序的 SettingsFragment 中使用 Switch,但似乎 IDE 在 XML 中看不到它。我使用了调试器,它似乎 root.findViewById(R.id.physicalEffortSwitch) returns null.. 它只是没有任何意义.. 有人吗?
这将是我的 XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="100dp">
<Switch
android:id="@+id/physicalEffortSwitch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="30dp"
android:paddingVertical="17sp"
android:text="@string/show_jobs_that_require_physical_effort"
android:textSize="15sp"
android:checked="false"
android:textOff="@string/off"
android:textOn="@string/on"
/>
<Button
android:id="@+id/saveChangesButton"
android:layout_width="340dp"
android:layout_height="wrap_content"
android:layout_marginTop="350dp"
android:layout_gravity="center_horizontal"
android:paddingVertical="20dp"
android:paddingHorizontal="15dp"
android:text="@string/save_changes"
android:background="#d3d3d3"
/>
</LinearLayout>
这是我的 SettingsFragment 代码:
public class SettingsFragment extends Fragment {
private View root;
private boolean physicalEffortPosts;
public static int range;
public static boolean physicalEffort;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
root = inflater.inflate(R.layout.fragment_settings, container, false);
setup();
return root;
}
private void setup(){
Switch physicalEffortSwitch = (Switch) this.root.findViewById(R.id.physicalEffortSwitch);
physicalEffortSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
physicalEffort = physicalEffortSwitch.isChecked();
}
});
}
检查您在 java 文件中导入的 Switch
class 是否正确(例如,与您在 xml 中使用的相同)。 Toolbar
通常会发生这种情况(至少有两个,如果您导入了错误的一个并且事情不起作用 right/can 不会被强制转换并最终为空)。
所以,我正在尝试在我的 Android 应用程序的 SettingsFragment 中使用 Switch,但似乎 IDE 在 XML 中看不到它。我使用了调试器,它似乎 root.findViewById(R.id.physicalEffortSwitch) returns null.. 它只是没有任何意义.. 有人吗? 这将是我的 XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="100dp">
<Switch
android:id="@+id/physicalEffortSwitch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="30dp"
android:paddingVertical="17sp"
android:text="@string/show_jobs_that_require_physical_effort"
android:textSize="15sp"
android:checked="false"
android:textOff="@string/off"
android:textOn="@string/on"
/>
<Button
android:id="@+id/saveChangesButton"
android:layout_width="340dp"
android:layout_height="wrap_content"
android:layout_marginTop="350dp"
android:layout_gravity="center_horizontal"
android:paddingVertical="20dp"
android:paddingHorizontal="15dp"
android:text="@string/save_changes"
android:background="#d3d3d3"
/>
</LinearLayout>
这是我的 SettingsFragment 代码:
public class SettingsFragment extends Fragment {
private View root;
private boolean physicalEffortPosts;
public static int range;
public static boolean physicalEffort;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
root = inflater.inflate(R.layout.fragment_settings, container, false);
setup();
return root;
}
private void setup(){
Switch physicalEffortSwitch = (Switch) this.root.findViewById(R.id.physicalEffortSwitch);
physicalEffortSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
physicalEffort = physicalEffortSwitch.isChecked();
}
});
}
检查您在 java 文件中导入的 Switch
class 是否正确(例如,与您在 xml 中使用的相同)。 Toolbar
通常会发生这种情况(至少有两个,如果您导入了错误的一个并且事情不起作用 right/can 不会被强制转换并最终为空)。