U8G2 - Referencing a String within the drawXBMP command

I need some help understanding why this doesn't work. The code successfully compiles however the bitmap is not correctly drawn, it renders as a static mess of dots.

char *someBitmaps[] = {
"Picture One",
"Picture Two",
"Picture Three",
};

int pictureNumber = 0;

const uint8_t PictureOne [] PROGMEM = {
  0x00, 0x00, 0x00, 0x00, .... };

const uint8_t PictureTwo [] PROGMEM = {
  0x00, 0x00, 0x00, 0x00, .... };

const uint8_t PictureThree [] PROGMEM = {
  0x00, 0x00, 0x00, 0x00, .... };

void drawPicture() {

  String drawImage = someBitmaps[pictureNumber];
  drawImage.replace(" ", "");

  u8g2.firstPage();  
    do {        
      u8g2.drawXBMP( 0, 0, 128, 32, drawImage.c_str() );
    } while( u8g2.nextPage() );
}

I'm expecting PictureOne to render.

Naturally if I type:

u8g2.drawXBMP( 0, 0, 128, 32, PictureOne );

The bitmap renders correctly.

If I print the value to the OLED screen using this command:

u8g2.print( drawImage.c_str() );

The correct value (PictureOne) is printed to the screen.

Am I doing something wrong or is this simply not possible?

I'm expecting PictureOne to render.

Why? You only define them in the flash memory but you never access that memory.

Am I doing something wrong or is this simply not possible?

What should be possible?

I want to know if it's possible to reference a string within the drawXBMP command. So rather than explicitly typing out the name of the file, I want to store it as a variable and call upon it within the drawXBMP command.

I want to know if it's possible to reference a string within the drawXBMP command.

Sure.

So rather than explicitly typing out the name of the file,

File? Where do you have a file here?

I want to store it as a variable and call upon it within the drawXBMP command.

That's exactly what you do here:

u8g2.drawXBMP( 0, 0, 128, 32, PictureOne );

How do I make this work?

String drawImage = someBitmaps[pictureNumber];
u8g2.drawXBMP( 0, 0, 128, 32, drawImage.c_str() );

You defined someBitmaps as strings which are not bitmaps. The bitmaps are in PictureOne, PictureTwo, etc. So you must not use the someBitmaps array but the PictureOne or PictureTwo arrays. If you want to select by index, make them in one array:

const uint8_t Pictures [][] PROGMEM = {
  {0x00, 0x00, 0x00, 0x00, .... },
  {0x00, 0x00, 0x00, 0x00, .... },
  {0x00, 0x00, 0x00, 0x00, .... }
};

Then you can access it by index:

u8g2.drawXBMP( 0, 0, 128, 32, Pictures[pictureNumber]);

Never use the String class on AVR Arduinos!