我正在使用Ormlite来实现persistense层,并且由于我的应用程序包含可以在代码的几个部分中重用的按钮,我想创建一个实现View.OnClickListener
的类并扩展{{1}其中OrmLiteBaseActivity<DataBaseHelper>
是数据库操作的助手。但当我这样做并试图让Dao在DataBaseHelper
课程中的onClick()
方法中保留一个对象时,我得到一个Button
,说IllegalArgumentException
从来没有调用。我这样做如下:
onCreate()
然后,在saveButton = (Button) findViewById(R.id.SaveProfileButton);
saveButton.setTag(profile);
saveButton.setOnClickListener(new SaveButton());
班:
SaveButton
评估Dao<Profile, Long> profileDao = null;
Profile profileToSave = null;
try {
profileDao = getHelper().getProfileDao();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
时发生错误。有任何想法吗?
提前谢谢!
答案 0 :(得分:1)
您不能像这样实例化一个Activity()类,您只能使用系统启动的活动,否则它们的Context将无法正确设置。
在您设置onClickListener的Activity中,您应该传入(this)并在那里处理click事件,或者您可以尝试:
编辑:
saveButton = (Button) findViewById(R.id.SaveProfileButton);
saveButton.setTag(profile);
saveButton.setOnClickListener(new SaveButtonListener(this));
SaveButtonListener.java:
public class SaveButtonListener extends OnClickListener() {
private Activity context;
public SaveButton(Activity c) {
this.context = c;
}
@Override
public void onClick(...) {
... your logic ...
context.doSomething();
context.findViewById(R.id.something);
}
}