如何在android上使用onclick方法

时间:2012-03-22 02:31:14

标签: android class button

所以我有这五个按钮,我希望它们始终存在于所有活动中,这些快捷按钮可用于其他活动。所以我为此创建了一个单独的xml布局,并将它们包含在其他活动布局中。我还创建了一个具有相应方法的类来处理按钮点击。

现在我的问题是我不知道如何在我的活动中使用/声明这个类。当我尝试运行我的应用程序时,logcat给出了一个错误,它无法找到处理点击的方法。

我该怎么做?

这是我的按钮处理程序类:

package com.meralco.pms;

import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.Toast;

public class ButtonsHandler extends Activity{

protected void startSin() {
    Intent launch = new Intent(this, SinActivity.class);
    startActivity(launch);
}
protected void startCity() {
    Intent launch = new Intent(this, CityActivity.class);
    startActivity(launch);
}

protected void startHelp() {
    Intent launch = new Intent(this, HelpActivity.class);
    startActivity(launch);

}
protected void startAll() {
    Intent launch = new Intent(this, AllActivity.class);
    startActivity(launch);

}
protected void startDate() {
    Intent launch = new Intent(this, DateActivity.class);
    startActivity(launch);

}
public void buttonClick(View v) {
    switch(v.getId())
      {
      case R.id.button_sin:
          Toast.makeText(v.getContext(), "SIN" , Toast.LENGTH_SHORT).show();
          startSin();
          break;
      case R.id.button_city:
          startCity();
          Toast.makeText(v.getContext(), "CITY" , Toast.LENGTH_SHORT).show();
          break;
      case R.id.button_date:
          startDate();
          Toast.makeText(v.getContext(), "DATE" , Toast.LENGTH_SHORT).show();
          break;
      case R.id.button_all:
          startAll();
          Toast.makeText(v.getContext(), "ALL" , Toast.LENGTH_SHORT).show();
          break;
      case R.id.button_help:
          startHelp();
          Toast.makeText(v.getContext(), "HELP" , Toast.LENGTH_SHORT).show();
          break;
      }
}
}

我想我缺少构造函数。我是朝着正确的方向前进还是我完全错了? TIA!

3 个答案:

答案 0 :(得分:1)

我会改变你的ButtonsHandler来扩展Fragment而不是Activity。然后,您可以在所有其他活动中包含此片段。他们必须扩展FragmentActivity才能托管您的ButtonsHandler片段,布局文件会将com.meralco.pms.ButtonsHandler作为片段引用。

为了在3.0之前的Android版本中支持片段,您需要使用Android兼容性库:http://developer.android.com/sdk/compatibility-library.html

您还想了解片段:http://developer.android.com/guide/topics/fundamentals/fragments.html

这是Android应用程序重用UI组件的推荐方式,例如:

  

Fragment表示Activity中的行为或用户界面的一部分。您可以在单个活动中组合多个片段以构建多窗格UI,并在多个活动中重用片段。您可以将片段视为活动的模块化部分,它具有自己的生命周期,接收自己的输入事件,并且可以在活动运行时添加或删除(有点像“子活动”,您可以在不同的活动中重复使用)。

关于你的按钮,你需要像这样挂钩听众:

Button helpButton = (Button) findViewById(R.id.button_help);
helpButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        startHelp();
        Toast.makeText(v.getContext(), "HELP" , Toast.LENGTH_SHORT).show();                   
    }
});

答案 1 :(得分:0)

单击按钮时,您需要添加OnClickListeners进行注册。

如果向下滚动一下,您可以在Android Dev Guide上了解如何使用它们。

答案 2 :(得分:0)

在每个按钮的xml中,确保你拥有属性android:onClick =“buttonClick”