所以我有这五个按钮,我希望它们始终存在于所有活动中,这些快捷按钮可用于其他活动。所以我为此创建了一个单独的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!
答案 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”