1

我一直在看一些帖子,但我仍然无法让我的代码工作(我是初学者).. 我只是想用我的两个按钮和一个案例开关来使用 toast.. 编译时它只是崩溃了.. 一个有什么想法吗?

代码 :

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_menu);

    TextView et = (TextView) findViewById(R.id.txtHeader);

    Button btnAdd = (Button) findViewById(R.id.btnAdd);
    Button btnDis = (Button) findViewById(R.id.btnDisplay);

    btnAdd.setOnClickListener((OnClickListener) this);
    btnDis.setOnClickListener((OnClickListener) this);

}


public void OnClick(View v) {

        switch (v.getId()) {
          case R.id.btnAdd:
        //  Toast msg = Toast.makeText(getBaseContext(), "Torben", Toast.LENGTH_LONG);
        //   msg.show();
            break;

          case R.id.btnDisplay:
        //    Toast msg1 = Toast.makeText(getBaseContext(), "Henriksen", Toast.LENGTH_LONG);
        //       msg1.show();
            break;

           default:

              break;
        }
      }
4

4 回答 4

1

我看到两个主要问题:

((OnClickListener) this

确保您的类实现OnClickListener了,因为如果您实际实现接口,则永远不需要强制转换。

类的声明应该是这样的:

public class MyActivity extends Activity implements OnClickListener

然后 OnClick改为小写o

@Override
public void onClick(View v) {
于 2013-01-22T21:06:56.397 回答
0

添加按钮侦听器的示例:

Button b = ((Button)findViewById(R.id.button_name));
b.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {   
                //do something
            }
        });

并确保在您的 xml 文件中使用 id @+id/button_name 或 @id/button_name 定义按钮(只要确保它们匹配)

于 2013-01-22T21:24:19.830 回答
0

一些日志输出会很有帮助!

一个疯狂的猜测是您的活动没有实现 OnClickListener,为什么还要将它转换为 OnClickListener?

于 2013-01-22T21:06:03.807 回答
0

只需在您的布局清单中检查按钮 id 是否正确并给出您正在使用的相同 id,如果是,请使用 LogCat 输出更新问题。

并且还要检查活动是否在清单中定义,因为您的代码中没有错误为多个按钮实现 onclick 侦听器。

享受!!

于 2013-01-22T21:13:39.587 回答