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 回答