Configurando RelativeLayout no código java

Estou tendo dificuldade em exibir duas exibições de texto umas sobre as outras no meu código java. Aqui está o código que estou experimentando:

/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);

        layout = new RelativeLayout(this);
        text1 = new TextView(this);
        text1.setText("1");
        text2 = new TextView(this);
        text2.setText("2");

        RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        RelativeLayout.LayoutParams q = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);

        q.addRule(RelativeLayout.BELOW, layout.getId());
        text1.setLayoutParams(q);
        layout.addView(text1);


        p.addRule(RelativeLayout.BELOW,text1.getId());
        text2.setLayoutParams(p);
        layout.addView(text2);

        setContentView(layout);
    }

Isso empilha as duas visualizações de texto na mesma linha, mas eu quero que o TextView text2 apareça abaixo do TextView text1; portanto, no meu aplicativo, desejo que o seguinte apareça como saída:

1
2

Eu tentei todo tipo de coisa com o método "addRule", não sei por que isso não está funcionando. Quero saber como fazer isso sem XML, porque pretendo criar uma biblioteca de métodos que podem criar um layout que seja facilmente ajustável através da edição de uma matri

questionAnswers(3)

yourAnswerToTheQuestion