.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 不会被强制转换并最终为空)。