В основном потоке
public void onClick(View v) {
String name = etName.getText().toString();
String mail = etEmail.getText().toString();
switch (v.getId()) {
case R.id.btnAdd:
Contact contact = new Contact(mail, name);
contact.save();
break;
case R.id.btnRead:
List<Contact> allContacts = Contact.listAll(Contact.class);
textView.setText(allContacts.toString());
break;
case R.id.btnClear:
Contact.deleteAll(Contact.class);
break;
}
И отдельный класс
import com.orm.SugarRecord;
public class Contact extends SugarRecord{
String name;
String mail;
public Contact() {
}
public Contact(String mail, String name) {
this.mail = mail;
this.name = name;
}
@Override
public String toString() {
return "Contact{" +
"name='" + name + '\'' +
", mail='" + mail + '\'' +
'}';
}
}
В AndroidManifest
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
android:name="com.orm.SugarApp"> <!--Используйте этот атрибут дословно-->
<meta-data android:name="DATABASE" android:value="sugar_example.db"/>
<meta-data android:name="VERSION" android:value="1"/>
<meta-data android:name="QUERY_LOG" android:value="true"/>
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.example.viktor.anabstract"/>
Запускаю приложение, ввожу данные, жму добавить и приложение вылетает
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.viktor.anabstract, PID: 12949
java.lang.NullPointerException: SugarContext has not been initialized properly. Call SugarContext.init(Context) in your Application.onCreate() method and SugarContext.terminate() in your Application.onTerminate() method.
at com.orm.SugarContext.getSugarContext(SugarContext.java:22)
at com.orm.SugarRecord.getSugarDataBase(SugarRecord.java:35)
at com.orm.SugarRecord.save(SugarRecord.java:416)
at com.example.viktor.anabstract.TestActivity.onClick(TestActivity.java:79)
at android.view.View.performClick(View.java:5246)
at android.widget.TextView.performClick(TextView.java:10620)
at android.view.View$PerformClick.run(View.java:21256)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:7007)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Мне всё ясно c этим кодом. Это пример не сколько на программирование, сколько на повторное использование кода. Вот моя рекомендация вам:
В вашем примере, на сайте указан гитхаб разработчика com.github.satyan. Я нашёл этого американца идийского происхождения. Увы, в его репозитории не оказалось этого кода. Можно долго полемизировать, почему он убрал код, но тем не менее. Кода нет. А значит отвечать по-существу нечего. Из вашего куска:
java.lang.NullPointerException: SugarContext has not been initialized properly.
Это по сути означает, что должен быть класс SugarContext
. Его нет.
Далее по коду,
Contact.listAll(Contact.class);
В классе Contact
- мы не нашли этого статического метода. Его там нет. Значит по определению будет ошибка компиляции. Итого, вижу два решения:
Виртуальный выделенный сервер (VDS) становится отличным выбором
Необходимо реализовать общение из расширения для Chrome с устройством по Bluetooth Low EnergyПроблема заключается в том, что Web Bluetooth API не работает в Chrome...
Не понимаю зачем нужны параметры в функциях в js Вот есть два примера первый с параметрами а второй нет
Подскажите, подскажите пожалуйста, модифицировать данное регулярное выражение: при нажатии клавиши Enter идёт переход на новую строку, и в вызалит...