2017-12-06 6 views
0

質問があります。私は主に加えて、いくつかのアクティビティを使用するアンドロイドアプリケーションを持っています。これらの中には、sqliteデータベースにデータを記録するフォームがあります。ボタンを使用して情報を保存しようとすると、アプリケーションからの応答が得られないという問題があります。エラーを表示することはありませんが、データベースを作成したり、メソッドを実行したりすることはありません。あたかも彼がボタンを押さなかったかのようです。私はAndroid Studio 3.0.1とSQLiteを使用しています。私はあなたが私を案内できることを願っています。ありがとうございました。メイン以外のアクティビティからデータを保存します

データ登録のための活動の1つに使用されるコードを添付します。

/*SQLite class*/ 
public class SqlDB extends SQLiteOpenHelper { 

    private static final int version=1; 
    private static final String name="DB_Proyecto"; 

    public SqlDB(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { 
    super(context, name, factory, version); 
    } 

    public SqlDB(Context context){ 
    super(context, name, null, version); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
    db.execSQL("CREATE TABLE IF NOT EXISTS Ars (idArs INT PRIMARY KEY AUTOINCREMENT NOT NULL, NameArs TEXT)"); 

    } 


    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 

    } 
} 

/* AddArsクラス。これからデータをデータベースに挿入してみてください。*/

public class AddArs extends AppCompatActivity implements View.OnClickListener { 

EditText et1; 
Button bt1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_add_ars); 

    et1 = (EditText)findViewById(R.id.etNombre); 
    bt1 = (Button)findViewById(R.id.btEnvia); 

    bt1.setOnClickListener(this); 
} 

public void GrabaDatos(){ 
    String nombreArs = et1.getText().toString(); 
    SqlDB sqlDB = new SqlDB(this, "DB_Proyecto", null, 1); 

    SQLiteDatabase dbase = sqlDB.getWritableDatabase(); 
    if(dbase !=null){ 
     ContentValues nuevoRegistro = new ContentValues(); 
     nuevoRegistro.put("NameArs", nombreArs); 

     dbase.insert("Ars", null, nuevoRegistro); 
     Toast.makeText(this, "Registro Creado.", Toast.LENGTH_SHORT).show(); 
    } 
} 

@Override 
public void onClick(View v) { 
    switch (v.getId()){ 
     case R.id.bt1: 
      GrabaDatos(); 
      break; 
     /*case by other buttons*/ 
    } 
} 
} 
+0

? – Shaishav

+0

お返事ありがとうございます。デバッグでは、onClickに対応するAddArsクラスの行44〜51のコードは実行されませんが、最終的にエラーをスキップしないため、解決するために何をすべきかわかりません。 – Edison

+0

さて、ダニエルの答えがあなたの問題を解決すると信じています – Shaishav

答えて

1

ボタンIDを正しく参照していません。

正しいIDはR.id.btEnvia次のとおりです。

ブレークポイントでデバッグしようとしました
@Override 
public void onClick(View v) { 
    switch (v.getId()){ 
     case R.id.btEnvia: 
      GrabaDatos(); 
      break; 
     /*case by other buttons*/ 
    } 
} 
+0

Danielに感謝します。私はボタンのイドで迷っていた。 – Edison

関連する問題