This is the latest stop for the 33-year-old, who started three games for the Washington Redskins last year, completing 52 of 91 passes for 590 yards, 3 touchdowns and 4 interceptions.
A fifth-round pick by the Tampa Bay Buccaneers in the 2008 draft, he has bounced around from team to team and league to league throughout his pro football career.
The Lions mark the 13th NFL team for Johnson, who also played for the Sacramento Mountain Lions of the United Football League and was expected to play for the San Diego Fleet of the Alliance of American Football before Washington signed him last year.
He has played in 33 career NFL games — starting eight — and has completed 148 of 268 passes for 1,632 yards, 8 touchdowns and 14 interceptions. His most significant action came early in his career in Tampa Bay, when he appeared in 26 games with five starts — the Bucs didn’t win any of the games he started.
Johnson picked up his first NFL win as a starter last season for Washington.
Detroit needed to sign Johnson after Tom Savage suffered an undisclosed injury in the first quarter of Thursday’s night’s 31-3 loss to New England. Savage had been in line to become Stafford’s backup quarterback, but with his injury and it being unclear how long he’ll be out, the Lions needed to add another quarterback to the roster besides Stafford and David Fales.
Johnson has familiarity with Lions quarterback coach Sean Ryan from their brief time together in Houston. Johnson was with the Texans for about two months in 2017.
The Lions also made a flurry of other moves Saturday: activating defensive end Trey Flowers from the physically unable to perform list, placing wide receiver Jermaine Kearse and defensive lineman Darius Kilgo on injured reserve, signing running back Justin Stockton and waiving cornerback Tarvarus McFadden from injured reserve.