0

私の状況は次のとおりです。レイアウトxmlには、マスターコンテナーとして機能する一般的なLinearLayoutがあり、すべて単一のアクティビティに含まれるページングシステムに基づいてコンテンツを設定したいと考えています。

私のJavaコードは次のとおりです。

private void goToPage(int pageNum){
    LinearLayout layout = (LinearLayout)this.findViewById(R.id.layoutRadioGroups);

    //Clear Views
    layout.removeAllViews();

    //Figure out array positions based on page number
    if (pageNum < this.PAGE_NUM)
        this.LAST_QUESTION_START -= this.NUM_PER_PAGE[pageNum];
    else{
        if (pageNum > 0)
            this.LAST_QUESTION_START += this.NUM_PER_PAGE[pageNum - 1];
        else
            this.LAST_QUESTION_START = 0;
    }
    this.PAGE_NUM = pageNum;

    //Grab my array values, create a TextView, and add it to the layout
    for (int i=this.LAST_QUESTION_START; i < this.LAST_QUESTION_START + this.NUM_PER_PAGE[pageNum]; i++){
        TextView tv = new TextView(layout.getContext());
        tv.setText(this.QUESTIONS[i]);
        tv.setId(i);
        layout.addView(tv);
    }
}

したがって、すべてのビュー(TextViewのみ)をクリアし、TextViewオブジェクトを定式化する正しい配列値を計算して、それらをレイアウトに追加します。

これで、ページ0が正しく表示されます。次のボタンをクリックすると、ページ1も正しく表示されます。しかし、2ページに移動すると、1ページのコンテンツはまだそこにあり、2ページのコンテンツが上にオーバーレイされています。

私はAndroid開発にかなり慣れていないので、何かを更新したり無効にしたりしていないかどうかはわかりませんが、戸惑っています。アイデアはありますか?

ありがとう!

4

1 に答える 1

0

問題を理解した。

このオーバーラップの問題は、アプリケーションのandroid:windowBackgroundが@nullに設定されている場合にのみ発生します。

このオーバーラップの問題は、テキストビューのテキストを配列値に設定している場合でも発生します。レイアウトなどに実際にビューを追加する必要はありません。

話の教訓は、最初に物事を適切に設定します。

そうは言っても、なぜこれが起こるのか誰かが知っていますか?

于 2013-02-16T22:54:30.460 に答える