0

メッセージを表示する一連のウィンドウをホストする Android アプリケーションに ViewFlipper を設定しました。複数の開いているチャットと同様に、各ウィンドウは異なるメッセージのセットに対応する必要があります。ビューを画面に表示するために同じ window.xml ビューを使用しているウィンドウごとに、編集する必要がある EditText の変数もあります。

参考までに、次のように子を作成して追加しています。

 public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);  
        detector = new GestureDetector(this,this);
        setContentView(R.layout.viewflip);
        flipper = (ViewFlipper) findViewById(R.id.viewflip);

        addChild(flipper);
        addChild(flipper);
}

private void addChild(ViewFlipper flip){
     int index=0;
     View view = getView();

     if(flip.getChildCount()==0){
         flip.addView(view,index);
     }
     else{
     flip.addView(view,flip.getChildCount());
 }

 }

 private View getView(){
     LayoutInflater inflater = this.getLayoutInflater();
     View view = inflater.inflate(R.layout.window, null);        
     return view;
 }

ご覧のとおり、基本的にビューを複製しています (これが私の設計に対する適切なアプローチかどうかはわかりません)。したがって、子を追加した後に onCreate 関数で何かを行うとしたら、次のようになります。

EditText messageHistoryText = (EditText) findViewById(R.id.messageHistory);         
        messageHistoryText.append("Testing :\n");

両方のウィンドウにテキストが表示されます。

私はこのようなものが良いだろうと思った:

View v1 = flipper.getChildAt(1);
        EditText messageHistoryText2 = (EditText) v1.findViewById(R.id.messageHistory);
        messageHistoryText2.append("Testing2 :\n");

しかし、それを使用すると、何も表示されません。おそらく、子の追加に誤りがあるのでしょう。おそらく、同じビューを使用できないか、EditText を間違った方法で選択的に変更している可能性があります。

チップ?

4

1 に答える 1

2

以下を試してください。

EditText messageHistoryText = flip.getChildAt(j).findViewById(R.id.messageHistory);

ここで、j は ViewFlipper の子の位置を表します。

于 2010-12-22T16:30:50.300 に答える