2012-04-12 14 views
1

私は、情報を入力するための入力テキストとテキストを入力するためのボタンがあるアプリケーションを持っています。 私はフォームを動的にしたいと思います。ユーザーが "+"ボタンを押すと動的に別のテキスト入力が表示され、もう一つの "+"ボタンが同じ方法で繰り返されます。動的に入力されたテキストとボタンをアクティビティに追加します。

私が作成し、xmlファイル、sample_content:

  <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignLeft="@+id/attempt" 
       android:layout_alignParentBottom="true" 
       android:text="TextView" /> 

      <Button 
       style="?android:attr/buttonStyleSmall" 
       android:layout_width="36dp" 
       android:layout_height="32dp" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentTop="true" 
       android:layout_marginRight="22dp" 
       android:text="+" /> 

      <EditText 
       android:layout_width="229dp" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:layout_marginRight="14dp" 
       android:layout_toLeftOf="@+id/addKey" 
       android:background="@drawable/inputtext_corner" 
       android:ems="10" 
       android:textSize="18sp" > 

       <requestFocus /> 

      </EditText> 

     </RelativeLayout> 

と私の活動では、AddDeviceActivity私は置く:

   inflater = LayoutInflater.from(AddDeviceActivity.this); 
       Button addKey = (Button) findViewById(R.id.addKey); 

       addKey.setOnClickListener(new Button.OnClickListener() { 
        public void onClick(View v) { 
         final RelativeLayout canvas = (RelativeLayout) AddDeviceActivity.this.findViewById(R.id.my_canvas); 
         final View childView = inflater.inflate(R.layout.sample_component, canvas, false); 
         // TODO: Look up the 5 different signatures of the addView method, 
         // and pick that best fits your needs 
         canvas.addView(childView); 
        } 
       }); 

をしかし、私は最初に追加したときので、このソリューションが動作しません。入力テキストと最初のボタン、私はAddDeviceActivityで動的に2番目のボタンを動作させる方法を知らない

答えて

0

Ju STは、あなたがこれを行うことができるかどうか迷っ:

あなたの活動がOnClickListenerを実装し、あなたの活動には、このメソッドを追加しておいてください。

public void onClick(View v) { 
    final RelativeLayout canvas = (RelativeLayout) AddDeviceActivity.this.findViewById(R.id.my_canvas); 
    final View childView = inflater.inflate(R.layout.sample_component, canvas, false); 
    canvas.addView(childView); 
    ((Button)childView.findViewById(R.id.addKey)).setOnClickListener(AddDeviceActivity.this); 
} 

そしてがするのではなく、

addKey.setOnClickListener(this); 

を使用するように初期のコードを変更します匿名の内部クラス。

これはテストしていませんが、なぜ動作しないのかわかりません。

0

inflate()方法

addKey.setOnClickListener(new Button.OnClickListener() { 
         public void onClick(View v) { 
          final RelativeLayout canvas = (RelativeLayout) AddDeviceActivity.this.findViewById(R.id.my_canvas); 
          final View childView = inflater.inflate(R.layout.sample_component, null, false); 
          // TODO: Look up the 5 different signatures of the addView method, 
          // and pick that best fits your needs 
          canvas.addView(childView); 
         } 
        }); 
に代わり canvasオブジェクトの nullを渡し、これをチェック
関連する問題