It sounds like you need to adjust the priorities on your animations. In your “action actutaor” there is a field called “Priority”. When Blender is trying to play multiple animations at the same time, it plays the animation that has the lowest priority number. (i.e. priority “0” will beat priority “10”).
Try setting your Run animation to priority 10, your walk to priority 20, and your idle to priority 100. The reason I suggested this is so that you have some room that if you add a “jump” animation it will have to have a priority as well and if there is room between the existing numbers then you can just add it without changing anything. If run, walk, idle were (0, 1, 2) and you wanted jump to trump all of them then you would have to change the priorities in all the logic bricks, which would be a pain.