2017-06-17 3 views
0

Ich entwickle eine Nutrition App, die ich brauche, um Lebensmittelnamen und ihre Kalorien in der Datenbank zu speichern. Ich verwende Sugar ORM als mein sqlite Database Tool. Wenn ich versuche, einen neuen Datensatz zu speichern, hört die App auf zu arbeiten, aber gib mir keine Fehlermeldung! Ich bin neu, so dass auf Android bitte erbarmen hier für Entity-Klasse mein Java-Code ist:App funktioniert nicht mehr, wenn ich versuche, zwei Felder mit Sugar ORM einzufügen

import com.orm.SugarRecord; 
import com.orm.dsl.Column; 
import com.orm.dsl.Table; 

@Table(name = "foods_name") 
public class Foods extends SugarRecord{ 

@Column(name = "food_name") 
private String foodName; 

@Column(name = "calorie") 
private String calorie; 

public Foods() { 
    this.foodName = foodName; 
    this.calorie = calorie; 
} 

public Foods(String foodName, String calorie) { 

    this.foodName = foodName; 
    this.calorie = calorie; 
} 
} 

und hier ist, wenn ich diese Klasse aufrufen:

 switch(item.getItemId()) { 
     case R.id.insert: 
      Dialog dialog = new Dialog(Dashboard.this); 
      dialog.setContentView(R.layout.insert); 
      dialog.setCanceledOnTouchOutside(true); 
      dialog.setTitle("Add a Food"); 
      final EditText foodName = (EditText) dialog.findViewById(R.id.insertFood_txt); 
      final EditText calorieName = (EditText) dialog.findViewById(R.id.calorie_txt); 
      Button insert_btn = (Button) dialog.findViewById(R.id.insertFood_btn); 
      insert_btn.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        String food_name = foodName.getText().toString().trim(); 
        String calorie = calorieName.getText().toString().trim(); 
        foods = new Foods(food_name,calorie); 
        foods.save(); 
        Toast.makeText(getApplicationContext(),"Food Added Successfully",Toast.LENGTH_SHORT).show(); 
       } 
      }); 
      dialog.show(); 
      break; 

Meine XML-Layout für Dateneinfügung ist wie folgt:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/insert"> 

    <EditText 
     android:id="@+id/insertFood_txt" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:hint="Food Name" 
     android:inputType="textPersonName" /> 

    <EditText 
     android:id="@+id/calorie_txt" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:hint="Calorie" 
     android:inputType="numberDecimal" /> 

    <Button 
     android:id="@+id/insertFood_btn" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Add Food" /> 
</LinearLayout> 

am Ende hier ist meine Manifest-Datei:

<?xml version="1.0" encoding="utf-8"?> 

<application 
    android:name=".appconfig.AppConfig" 
    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" > <!--Use this attribute verbatim--> 
    <meta-data android:name="DATABASE" android:value="nutrition.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.niloufar.nutrition3.dataModel" /> 

    <activity android:name=".Dashboard"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name=".BmiActivity" /> 
    <activity android:name=".IdealWeight" /> 
    <activity android:name=".GoalWeight"></activity> 
</application> 

Meine Android Monitor Log:

`06-18 02:43:26.874 1009-1009/? I/art: Not late-enabling -Xcheck:jni (already on) 
06-18 02:43:26.874 1009-1009/? W/art: Unexpected CPU variant for X86 using defaults: x86_64 
06-18 02:43:26.890 1009-1016/? I/art: Debugger is no longer active 
06-18 02:43:26.890 1009-1016/? I/art: Starting a blocking GC Instrumentation 
06-18 02:43:26.961 1009-1009/? W/System: ClassLoader referenced unknown path: /data/app/com.example.niloufar.nutrition3-2/lib/x86_64 
06-18 02:43:26.969 1009-1009/? I/InstantRun: starting instant run server: is main process 
06-18 02:43:27.015 1009-1009/? W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable 
06-18 02:43:27.163 1009-1025/? I/OpenGLRenderer: Initialized EGL, version 1.4 
06-18 02:43:27.163 1009-1025/? D/OpenGLRenderer: Swap behavior 1 
06-18 02:43:27.163 1009-1025/? W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without... 
06-18 02:43:27.164 1009-1025/? D/OpenGLRenderer: Swap behavior 0 
06-18 02:43:27.182 1009-1009/? W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView 

` After Adding the food

Antwort

0

fand ich das Problem. Instant Run muss zuerst deaktiviert werden. Dann habe ich die Datenbankversion in der Manifest-Datei erhöht und die App funktioniert.

1

haben Sie Ihre Datenbank aktualisieren, bevor sie von Ihrem Gerät zu deinstallieren? Wenn Sie Ihre Datenbank aktualisieren und keine Datenbankversion in Ihrem Manifest Ihrer App stürzt erhöhen

 <meta-data 
     android:name="DATABASE" 
     android:value="your_database_name" /> 
    <meta-data 
     android:name="VERSION" 
     android:value="2" /> 
    <meta-data 
     android:name="QUERY_LOG" 
     android:value="true" /> 
    <meta-data 
     android:name="DOMAIN_PACKAGE_NAME" 
     android:value="your_package_name" /> 
+0

Habe es geschafft und es besteht das Problem noch –

+0

Könntest du mir bitte den Fehler in Android Monitor Tab am unteren Rand des Android Studios geben? – Meikiem

+0

Es gibt keinen Fehler dort! Was ist dort ist dies: Verbunden mit Prozess 835 auf dem Gerät Slim_Shady_API_24 [Emulator-5554] Anwendung beendet. –

Verwandte Themen