2017-06-17 8 views
0

私は食品名とそのカロリーをデータベースに保存する必要がある栄養アプリケーションを開発しています。私はsqliteデータベースツールとしてSugar ORMを使用しています。新しい記録を保存しようとすると、エラーメッセージが表示されませんが、Appは動作を停止します。データ挿入のための私のxmlレイアウトがあるSugar ORMを使用して2つのフィールドを挿入しようとするとアプリケーションが動作しなくなる

 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; 

:私は、そのクラスを呼び出すとき

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; 
} 
} 

、ここでは、次のとおりです。私はここで慈悲 はEntityクラスのための私のJavaコードで持ってくださいAndroidに新たなんです次のように:

<?xml version="1.0" encoding="utf-8"?> 
012:ここで終わりに

<?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> 

は私のマニフェストファイルであります

<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> 

マイアンドロイドモニターログイン:

`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

答えて

0

場合、私は問題を発見しました。 最初にインスタント実行を無効にする必要があります。その後、マニフェストファイルのデータベースバージョンを増やし、アプリを動かしました。

1

あなたのデバイスからそれをアンインストールする前に、データベースを更新したのですか? あなたのデータベースを更新し、あなたのアプリがクラッシュしますあなたのマニフェストに、データベースのバージョンを増加させない、

 <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

まだ問題はありますか? –

+0

アンドロイドスタジオの下部にあるAndroidモニタータブでエラーを教えてください。 – Meikiem

+0

エラーはありません!何がありますか:デバイスのプロセス835に接続しました。Slim_Shady_API_24 [emulator-5554] アプリケーションが終了しました。 –

関連する問題