【问题标题】:Button setOnClickListener causing application crash按钮 setOnClickListener 导致应用程序崩溃
【发布时间】:2012-05-05 11:12:11
【问题描述】:

所以我有 2 个 XML 布局文件。
一个是菜单,另一个是应用程序。
所以,现在我在一个 XML 文件上有一些按钮,在另一个文件上有一些其他按钮。

所以这段代码有效:

    setContentView(R.layout.main);
    start = (Button) findViewById(R.id.button1);

    start.setOnClickListener(this);

但是如果我改变视图并写下这个:

    setContentView(R.layout.random);
    add_person = (Button) findViewById(R.id.add);

    add_person.setOnClickListener(this); //crash here

应用程序崩溃!

【问题讨论】:

  • 当然可以。xml是eclipse用gui builder创建的。 codeviewer.org/view/code:25c0
  • 更改按钮的id添加到xml和onclick方法中
  • sry...xml 中的 id 是添加的。你是说这条线 s?tart = (Button) findViewById(R.id.button1);这行有效。
  • @DennisNolte 实际上 dennis 带有 id add 的按钮必须在 xml 文件中随机
  • 这里是崩溃日志:codeviewer.org/view/code:25c2

标签: java android xml button


【解决方案1】:

add_person 为空,因此获取 Nullpointer 异常,并且您在 random.xml 中有按钮,该按钮已添加为 id?

如果没有则添加

<Button android:id="@+id/add" ... />

【讨论】:

  • 是的,我在 cmets 中上传了 xml。所以另一个按钮也不起作用。它在 xml 和 java 类中也有正确的 id
【解决方案2】:

Project->Clean 清除当前项目后尝试。

或者你可以使用

(Button)random.findViewById(R.id.add);

而不是

(Button) findViewById(R.id.add);

【讨论】:

    【解决方案3】:

    您应该像这样将类实现为onClickListner

    public class <ClassName> extends Activity implements OnClickListener{
    
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
    
                setContentView(R.layout.main);
                start = (Button) findViewById(R.id.button1);
                start.setOnClickListener(this);
        }
    
        @Override
        public void onClick(View v) {
               switch (v.getId()) {
                   case R.id.button1:
                       //Hear Yor Logic on Click Event.
                       break;       
               }        
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      相关资源
      最近更新 更多