2017-06-25 12 views
0

動的なボタンを作成し、その中にクリック機能を追加しようとしています。ボタン配列の要素でgetTagメソッドを試してみました。これらのコードを実行しようとすると、アプリがクラッシュして、v.getTag()とbutton.getTag()の両方を試みました。助けてくれてありがとう。クリック方法の動的ボタンとgetTag

public class MainActivity extends AppCompatActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.testing); 
     //test creating of dynamic buttons 
     Button[] myButton = new Button[4]; 
     LinearLayout scrViewButLay = (LinearLayout) findViewById(R.id.layout); 
     for (int index = 0; index < 4; index++) { 
      myButton[index] = new Button(this); //initialize the button here 
      myButton[index].setText("Button # "); 
      myButton[index].setTag(index); 
      scrViewButLay.addView(myButton[index]); 
      myButton[index].setOnClickListener(getOnClickDoSomething(myButton[index])); 
     } 
    } 


    View.OnClickListener getOnClickDoSomething(final Button button) { 
     return new View.OnClickListener() { 
      public void onClick(View v) { 
       button.setText("text now set.. "); 
       //Log.i("info",(String) button.getTag()); 
       Log.i("info",(String) v.getTag()); 
      } 

     }; 
    } 
} 

LogCatエラー-----------------------------------------

Log.i("info", ""+v.getTag()); 

またはあなたがしたい場合は:--------------------------

com.example.mandeep.pos1_1, PID: 26112 
                      java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 
                       at com.example.mandeep.pos1_1.MainActivity$1.onClick(MainActivity.java:43) 
                       at android.view.View.performClick(View.java:4757) 
                       at android.view.View$PerformClick.run(View.java:19757) 
                       at android.os.Handler.handleCallback(Handler.java:739) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:135) 
                       at android.app.ActivityThread.main(ActivityThread.java:5219) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at java.lang.reflect.Method.invoke(Method.java:372) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:693) 
+0

ボタンのIDを設定してみてください –

+2

あなたはどのようなエラーが発生しましたか?あなたはスタックトレースを投稿できますか? –

+0

ここにlogcatを投稿 –

答えて

0

はこれを使用してみてくださいそれをintに解析します。

+0

ありがとう –

関連する問題