2011-07-06 10 views
2

私はR.layout.mainに実装された2つのレイアウトを持つActivityを持っています。最初のものはアプリのメイン画面の相対レイアウトで、もう1つは一種の設定画面を持つ表レイアウトです。通常、最初のものは可視に設定され、2つ目は可視に設定されます。ボタンをクリックすると、相対レイアウトがなくなり、テーブルレイアウトが表示されます。 ここで私の問題が始まります。私はそのテーブルレイアウト(実際にはボタンの配列)にOnClickListenerを設定したかったのです。 私は次のようなものを試しました:OnClickListenerとテーブルレイアウト

final TableLayout table = (TableLayout)findViewById(R.id.tab); 
    table.setOnClickListener(new OnClickListener(){ 
     public void onClick(View arg){ 
      Button clickedButton = (Button)arg; 
      String t = (String) clickedButton.getTag(); 

      Toast toast = Toast.makeText(getApplicationContext(),t,Toast.LENGTH_SHORT); 
      toast.show(); 

     } 
    }); 

明らかに、動作しません。 私はAndroidプログラミングには全く新しいので、結果なく一日中適切なソリューションを探していました。

答えて

1
あなたが最初にあなたのTableLayoutはボタンのみを含むされている場合、あなたが何か行うことができ...ボタンに をTableLayoutをキャストしようとしているので、それは動作しませんでした

TableLayout yourRootLayout = findView.... 
int count = yourRootLayout.getChildCount(); 
for(int i = 0; i < count; i++){ 
    View v = yourRootLayout.getChildAt(i); 
    if(v instanceof TableRow){ 
     TableRow row = (TableRow)v; 
     int rowCount = row.getChildCount(); 
     for (int r = 0; r < rowCount; r++){ 
      View v2 = row.getChildAt(r); 
      if (v2 instanceof Button){ 
       Button b = (Button)v2; 
       b.setOnClickListener(this); 
      } 
     } 
    } 
} 

をし、あなたの活動を実施してみましょうOnClickListener。既存のonClickをアクティビティ自体にコピーしてください...

+0

お返事ありがとうございます。実際、私はそれを少し不明瞭にしたかもしれない。私は5行、各4つのボタンからなるテーブルレイアウトを持っています。最終的にはボタンのみで構成される配列ですが、メソッドではテーブル行が子として返されるため、OnClickListenerはまだ正常に動作しません。それを改善する考えはありますか?前もって感謝します。 – droidss

+0

@droidss change at –

+0

これは完璧に動作します。私はもう一週間それを理解しないだろうと思う。本当にありがとう。 – droidss

関連する問題