使用Ormlite在Android项目中实现OnClickListener

时间:2012-04-16 23:23:59

标签: java android ormlite onclicklistener

我正在使用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(); } 时发生错误。有任何想法吗? 提前谢谢!

1 个答案:

答案 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);
    }
}