Android 设置两个onclick侦听器时应用程序崩溃

Android 设置两个onclick侦听器时应用程序崩溃,android,Android,我已将以下代码放在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 Butto

我已将以下代码放在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;
    }
}

运行应用程序时会崩溃。有人能帮我一下吗

实际上你忘记了
setContentView(R.layout.)按钮之前,在活动的
onCreate()
中进行编码>

大概

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

onCreate()
方法之外,作为
MyTest活动类的一部分。不是在MyTest活动类的外部

实际上您忘记了
setContentView(R.layout.)按钮之前,在活动的
onCreate()
中进行编码>

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();
                    }
           });
 }
}
大概

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

onCreate()
方法之外,作为
MyTest活动类的一部分。不是MyTest活动类的外部

“MyTest类的外部”?你的意思是“在课堂内”吗?是“在课堂外”吗?你不是说“内部”吗?庞大的代码。OP有一个很好的方法来实现按钮的onClickListener。他刚刚错过了
setContentView()
method.。谢谢你。非常感谢您的帮助,庞大的代码。OP有一个很好的方法来实现按钮的onClickListener。他刚刚错过了
setContentView()
method.。谢谢你。非常感谢您的帮助这是假设OP没有在“/”中包含
setContentView(R.layout.)
,“@Asok-是的,您是对的。然后OP还需要包括stacktrace,但正如您看到的问题主题一样,这是唯一的事情。@Asok-如果按钮为空,则只有OP无法设置
onClickListener()
。因此假设他忘记了
setContentView()
,或者按钮的ID未在布局xml文件中定义。感谢您的帮助。我错过了比赛setContentView@user370305是的,我最初的猜测不见了,或者id拼错了,因为显示了“/…其他一些代码”,并且在Eclipse中创建新的Android应用程序项目时,
setContentView()
是自动生成的,但是有一个很好的提示:)。这是假设OP不包括
setContentView(R.layout.)
在“/…其他一些代码在这里初始化布局“@Asok-是的,你是对的。然后OP还需要包括stacktrace,但正如您看到的问题主题一样,这是唯一的事情。@Asok-如果按钮为空,则只有OP无法设置
onClickListener()
。因此假设他忘记了
setContentView()
,或者按钮的ID未在布局xml文件中定义。感谢您的帮助。我错过了比赛setContentView@user370305是的,我最初的猜测不见了,或者id拼错了,因为显示了“/…其他一些代码”,并且在Eclipse中创建新的Android应用程序项目时,
setContentView()
是自动生成的,但是很好的提示:)。
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();
                    }
           });
 }
}