1

我正在使用 Ormlite 来实现持久层,并且由于我的应用程序包含可以在代码的多个部分中重用的按钮,我想创建一个实现View.OnClickListener和扩展的类,我的数据库操作助手OrmLiteBaseActivity<DataBaseHelper>在哪里。DataBaseHelper但是当我这样做并尝试让一个 DaoonClick()在我的类的方法中持久化一个对象时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();   
}

评估时发生错误getHelper。有任何想法吗?提前致谢!

4

1 回答 1

1

你不能像这样实例化一个 Activity() 类,你只能使用系统已经启动的活动,否则它们的 Context 将无法正确设置。

在您设置 onClickListener 的 Activity 中,您应该传入 (this) 并在那里处理点击事件,或者您可以尝试:

编辑:

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);
    }
}
于 2012-04-17T01:42:43.267 回答