現在、ボタンを押して画面遷移するアプリ<MainActivity.java>と
Sqliteのデータを書き込み<Main2Activity.java>、読み出し<Main3Activity>させるアプリを作ろうと試みています。
違うプロジェクトで画面遷移するだけ、Sqlteのデータを扱うだけのアプリを作成することには成功し
そこで使ったコードをxmlやjavaの名前などを対応させてほぼぞのまま利用しています。
レイアウトとして
メイン画面に二つのボタンを用意し
一つ目のボタンを押すとSqliteへのデータを書き込む画面へと遷移させ
二つ目のボタンを押すとsqliteへのデータを読み出す画面へと遷移させるつもりです。
しかし、その中で一つ目のボタンの画面遷移がうまくいきません。
現象としては
MainActivityのbutton1を
クリックしたとたんに「問題が発生しました」と表示され強制終了してしまいます。
button2ではちゃんとMain3Activityへと遷移するので
button1だけ問題が発生するというのはどういうことなのか、検討がつきません。
Manifestにもnameは登録しています。
誰か分かるかたぜひお力をお貸しください。
[MainActivity.java]
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
public class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void onClick(View view){ switch (view.getId()) { case R.id.button1: Intent intent = new Intent(this, Main2Activity.class); startActivity(intent); break; case R.id.button2: intent = new Intent(this, Main3Activity.class); startActivity(intent); break; } }
}
[Main2Avtivity.java]
import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Main2Activity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MyOpenHelper helper = new MyOpenHelper(this); final SQLiteDatabase db = helper.getWritableDatabase(); final EditText ShopnameText = (EditText) findViewById(R.id.editShopName); final EditText CommentText = (EditText) findViewById(R.id.editComment); Button entryButton = (Button) findViewById(R.id.insert); entryButton.setOnClickListener(new View.OnClickListener() {/ @Override public void onClick(View v) { String Shopname = ShopnameText.getText().toString(); String Comment = CommentText.getText().toString(); ContentValues insertValues = new ContentValues(); insertValues.put("Shopname", Shopname);//項目設定 insertValues.put("Comment", Comment);//項目設定 long id = db.insert("Shops", null, insertValues); Toast toast = Toast.makeText(Main2Activity.this, "登録完了", Toast.LENGTH_SHORT); toast.show(); Intent dbIntent = new Intent(Main2Activity.this, Main3Activity.class); startActivity(dbIntent); } });
}
[Main3Actvity.java]
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.LinearLayout;
import android.widget.TextView;
public class Main3Activity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main3); LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); setContentView(layout); MyOpenHelper helper = new MyOpenHelper(this); SQLiteDatabase db = helper.getReadableDatabase(); Cursor c = db.query("Shops", new String[] {"Shopname", "Comment"}, null, null, null, null, null); boolean mov = c.moveToFirst(); while (mov) { TextView textView = new TextView(this); textView.setText(String.format("%s : %s", c.getString(0), c.getString(1))); } c.close();//closeメソッドでカーソルを閉じておしまいです。 db.close(); }
}
[MyOpenHelper.java]
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MyOpenHelper extends SQLiteOpenHelper {
public MyOpenHelper(Context context) { super(context, "TenpoTorokuDB", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("create table Shops(" + "_id INTEGER PRIMARY KEY," + "Shopname text not null,"+ "Comment text" + ");"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { if( oldVersion == 1 && newVersion == 2 ){ db.execSQL("DROP TABLE IF EXISTS Shops;"); db.execSQL("create table Shops(" + "Shopname text not null,"+ "Comment text" + ");"); } }
}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/08 09:05