Adding Form Fields with Settings API

You’re using same callback function for both setting fields. Use different ones with it’s own inputs. Here’s updated code:

<?php
/*
Plugin Name: Settings API Demo
Description: Learning Setting Field and Settings Section
Author: Teno
*/

add_action('admin_init', 'settingsapi_init');
function settingsapi_init(){
    register_setting( 'settingsapi_optiongroupname', 'settingsapi_optionname');
    add_settings_section('plugin_main', 'Section 1', 'settingsapi_sectiondescription', 'settingsapi_pageslug');
    add_settings_field('plugin_text_string_a', 'Option A', 'settingsapi_setting_string_a', 'settingsapi_pageslug', 'plugin_main');
    add_settings_field('plugin_text_string_b', 'Option B', 'settingsapi_setting_string_b', 'settingsapi_pageslug', 'plugin_main');
}

function settingsapi_sectiondescription() {
    echo '<p>This is a section description.</p>';
}

// First field callback.
function settingsapi_setting_string_a() {
    $options = get_option('settingsapi_optionname');
    echo "<input id='plugin_text_string' name="settingsapi_optionname[option_a]" size="40" type="text" value="{$options["option_a']}' />";
}

// Second field callback.
function settingsapi_setting_string_b(){
    $options = get_option('settingsapi_optionname');

    echo "<input id='plugin_text_string' name="settingsapi_optionname[option_b]" size="40" type="text" value="{$options["option_b']}' />";
}

// admin menu
add_action('admin_menu', 'plugin_admin_add_page');
function plugin_admin_add_page() {
    add_options_page('Custom Plugin Page', 'Demo Settings API Menu', 'manage_options', 'settingsapi_pageslug', 'settingsapi_adminpage');
}

function settingsapi_adminpage() {
    ?>
    <div class="wrap">
        <h2>Demo Plugin for Settings API</h2>
        <form action="options.php" method="post">
            <?php settings_fields('settingsapi_optiongroupname'); ?>
            <?php do_settings_sections('settingsapi_pageslug'); ?>
            <?php submit_button(); ?>
        </form>
    </div>
    <?php
}
?>