我想知道是否有人有任何使用领域和黄油刀的例子。是否可以将两者结合使用?
到目前为止,我所尝试的是以下内容,但我不确定它是否正确。有人告诉我使用ExecuteTransaction,但我不确定它是否合适。
public class MainFragmentActivity extends FragmentActivity {
MainFragmentAdaptor mMainFragmentAdaptor;
ViewPager mViewPager;
Player player;
Realm realm;
@BindView(R.id.et_character_name)
EditText et_character_name;
@OnTextChanged(R.id.et_character_name)
protected void onTextChanged(CharSequence text) {
String name = text.toString();
player.setName(name);
try {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.copyToRealmOrUpdate(player);
player.setCurrentHP(37);
}
});
} catch (Exception e) {
Log.e("REALM SET PLAYER ERROR", e.toString());
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ButterKnife.bind(this);
realm = Realm.getDefaultInstance();
setContentView(R.layout.activity_main_fragment);
mViewPager = (ViewPager) findViewById(R.id.viewpager);
mViewPager.setAdapter(mMainFragmentAdaptor);
try {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
player = realm.createObject(Player.class);
player.setCurrentHP(37);
}
});
} catch (Exception e) {
Log.e("REALM SET PLAYER ERROR", e.toString());
}
}
@Override
public void onDestroy() {
super.onDestroy();
if (realm != null) { // guard against weird low-budget phones
realm.close();
realm = null;
}
}
}
答案 0 :(得分:2)
是否可以将两者结合使用?
是。两者都是相互独立的。
我被告知要使用ExecuteTransaction,但我不确定它 合适的。
在大多数情况下,您应该使用executeTransaction()
,因为它会为您处理错误。使用beginTransaction()
的唯一原因通常是您希望进行一些自定义错误处理。*
有关详情,请参阅 link
答案 1 :(得分:1)
使用ButterKnife
和Realm
绝对没问题。两者都有不同的用途。
领域 领域移动平台是应用程序的数据层。与数据库一样,Realms中的数据可以被查询和过滤,互连和持久化
Butterknife 轻量级库,可将视图注入Android组件。它使用注释处理。
根据Christian Melchior身为Realm的Android Tech Lead,
executeTransaction()
相当于
try {
realm.beginTransaction();
// body of executeTransaction
realm.commitTransaction();
} catch(Exception e) {
if(realm.isInTransaction()) {
realm.cancelTransaction();
}
throw new RuntimeException(e);
}
因为executeTransaction()
它处理开发人员的错误,所以beginTransaction()
用于自定义错误处理(如果需要)。