In case anyone else runs into this issue, it’s not a problem with the menu settings.
If your WordPress theme uses Bootstrap for a responsive layout, then the problem is most likely a file called wp_bootstrap_navwalker.php that’s part of your theme.
There’s code in that file which ALWAYS render the top-most (parent) menu link with a ‘#’ URL if there are child pages below it.
Here’s a StackOverflow post describing the problem:
https://stackoverflow.com/questions/25692514/bootstrap-how-do-i-make-dropdown-navigation-parent-links-an-active-link
Although the “official” solution in that post is a JavaScript solution, the solution I chose is the one by Sohail Qureshi just below the JavaScript one. It involves updating the code in wp_bootstrap_navwalker.php to correctly render top-level links. That solution worked perfectly for me.