0

onCreateメソッドのメインアクティビティに次のコードを配置しました

public class MyTest extends Activity implements OnClickListener{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
 //... some other code here to init the layout
    Button btn1 = (Button)findViewById(R.id.button1);
    Button btn2 = (Button)findViewById(R.id.button2);
    btn1.setOnClickListener(this);
    btn2.setOnClickListener(this);
}

そして、次のコードをクラスMyTestの外に配置しました

@Override
public void onClick(View v) {
    switch(v.getId()){
        case R.id.button1:
            break;
        case R.id.button2:
            break;
    }
}

アプリケーションを実行すると、クラッシュします。誰か助けてくれませんか

4

2 に答える 2

5

実際には、を定義する前にアクティビティを忘れsetContentView(R.layout.<main_xml>); ました。onCreate()Buttons

何かのようなもの、

protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.<main_xml>); // This line is necessary
 .
 .
 .

アップデート:

また、あなたは置く必要があります

@Override
public void onClick(View v) {
    switch(v.getId()){
        case R.id.button1:
            break;
        case R.id.button2:
            break;
    }
}

onCreate()あなたの一部としてメソッドの外でMyTest Activity Class。の外側ではありませんMyTest Activity Class

于 2012-11-28T13:23:51.397 に答える
0
public class MyTest extends Activity implements OnClickListener{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
  setContentView(R.layout.main_xml);
    Button btn1 = (Button)findViewById(R.id.button1);
    Button btn2 = (Button)findViewById(R.id.button2); 

    btn1.setOnClickListener(new OnClickListener()
           {

                    public void onClick(View v) 
                    {
                           Toast.makeText(myactivity.this, "The button=1 was clicked.", Toast.LENGTH_LONG).show();
                    }
           });
    btn2.setOnClickListener(new OnClickListener()
           {

                    public void onClick(View v) 
                    {
                           Toast.makeText(myactivity.this, "The button=2 was clicked.", Toast.LENGTH_LONG).show();
                    }
           });
 }
}
于 2012-11-28T13:28:01.830 に答える