У меня есть три макета:Выборка данных из выпуска базы данных в Android
Main Layout (с кнопкой "Профиль")
расположение профилей (с TextView, чтобы показать данные из базы данных и две кнопки названный как «Edit» и «назад к Main»)
редактирование макета (с TextView и EditText редактировать профиль пользователя и две кнопки снова, что говорит: «Сохранить» и «назад к профилю»)
Методы, относящиеся к кнопкам: (кнопка есть с одной звездой, связанные методы с двумя звездами)
* Профиль: ** editm (Просмотр ж)
* Edit: ** calledit (Просмотр ж)
* Вернуться на главную: ** backmain (Просмотр ж)
* Сохранить: * savemethj (Просмотр ж)
* Вернуться в профиль: ** pbackmeth (Просмотр ж) класса
public class MainActivity extends Activity
{
TextView t1;
EditText e1,e2;
databasehelper helper;
//Profile variables
String ptrm;
pdatabasehelper phelper;
EditText ed1;
EditText ed2;
EditText ed3;
EditText ed4;
EditText ed5;
EditText ed6;
TextView ptn;
TextView kt0;
TextView kt1;
TextView kt2;
TextView kt3;TextView kt4;TextView kt5;TextView kt6;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
phelper=new pdatabasehelper(this);
}
public void backmain(View w){
setContentView(R.layout.activity_main);
}
public void editm(View w){
setContentView(R.layout.profilec);
try{
pshow();
}
catch(Exception e){
Toast.makeText(getBaseContext(), "pshow method", 5).show();
}
}
public void pshow()
{
onStartp();
Log.d("7", "a");
onstart();
Log.d("10", "a");
try{
Log.d("55555", "entering to db");
Cursor c=phelper.pshowrecord(ptrm);
Log.d("11", "a");
if (c!=null){
Log.d("c1", "a");
c.moveToFirst();
Log.d("cmm1", "a");
String name= c.getString(0);
Log.d("cn1", "a");
kt1.setText(name);
Log.d("c2", "a");
kt2.setText(c.getString(1));
Log.d("c3", "a");
kt3.setText(c.getString(2));
Log.d("12", "a");
kt4.setText(c.getString(3));
kt5.setText(c.getString(4));
kt6.setText(c.getString(5));
Log.d("13", "a");
}
else{
Log.d("14", "a");
Toast.makeText(this,"Add a Contact", 50).show();
}
}catch(Exception e){
Toast.makeText(getBaseContext(), "SOme display error", 20).show();
}
}
public void pbackmeth(View w){
setContentView(R.layout.profilec);
pshow();
}
public void calledit(View w)
{
setContentView(R.layout.editc);
}
public void onStartp(){
kt1=(TextView)findViewById(R.id.ptext3);
kt2=(TextView)findViewById(R.id.ptext5);
kt3=(TextView)findViewById(R.id.ptext7);
kt4=(TextView)findViewById(R.id.ptext9);
kt5=(TextView)findViewById(R.id.ptext11);
kt6=(TextView)findViewById(R.id.ptext13);
}
public void onstart(){
ed1=(EditText)findViewById(R.id.jname);
ed2=(EditText)findViewById(R.id.jeditText1);
ed3=(EditText)findViewById(R.id.jeditText2);
ed4=(EditText)findViewById(R.id.jeditText3);
ed5=(EditText)findViewById(R.id.jeditText4);
ed6=(EditText)findViewById(R.id.jaeditText1);
ptn=(TextView)findViewById(R.id.jprofile);
}
public void savemethj(View w)
{
onstart();
Log.d("tag000", "before allgettext");
long a;
Log.d("tag01111", "afterlong");
ptrm=ptn.getText().toString();
try{
phelper.deleterecord(ptrm);
Log.d("tag02222", "be");
String edt1=ed1.getText().toString();
String edt2=ed2.getText().toString();
Log.d("tag03333", "be11111");
String edt3=ed3.getText().toString();
String edt4=ed4.getText().toString();
Log.d("tag0444444", "be2222");
String edt5=ed5.getText().toString();
String edt6=ed6.getText().toString();
Log.d("tag11111", "after allgettext");
phelper.deleterecord(ptrm);
a=phelper.insertpro(ptrm,/*img*/edt1, edt2, edt3, edt4, edt5, edt6);
Log.d("tag9999999", "after allgettext");
if(a>=1){
Toast.makeText(getBaseContext(),a+ "Record Successfully Saved", 30).show();
}
else{
Toast.makeText(getBaseContext(), "Not Saved", 30).show();
}}
catch(Exception e)
{
Toast.makeText(getBaseContext(), "Errrrrrrrrrrr", Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
База данных:
public class pdatabasehelper extends SQLiteOpenHelper
{
final static String databasename="demonewexp";
final static int databaseversion=1;
public pdatabasehelper(Context ctx){
super(ctx,databasename,null,databaseversion);
}
@Override
public void onCreate(SQLiteDatabase db) {
try{
Log.d("tag4545","database");
db.execSQL("create table mypro(id text,name text,guardian text,number text,address text,medical text,another text)");
}
catch(SQLException e){e.printStackTrace();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("drop table if Exists mypro");
onCreate(db);
}
public long insertpro(String id,String e1,String e2,String e3,String e4,String e5,String e6)
{
SQLiteDatabase base=getWritableDatabase();
ContentValues value=new ContentValues();
value.put("id", id);
value.put("name", e1);
value.put("guardian", e2);
value.put("number", e3);
value.put("address", e4);
value.put("medical", e5);
value.put("another", e6);
long a=base.insert("mypro",null,value);
return a;
}
public Cursor pshowrecord(String id)
{
Log.d("d1", "a");
Cursor cs = null;
SQLiteDatabase base=getReadableDatabase();
Log.d("d2", "a");
try
{
Log.d("d3", "a");
cs=base.query("mypro", new String[]{"name","guardian","number","address","medical","another"},"id=?", new String[]{String.valueOf(id)}, null, null, null);
Log.d("d4", "a");
return cs;
}catch(Exception e){
Log.d("d5", "a");
return cs;
}
}
public void deleterecord(String pe_id)
{
SQLiteDatabase base=getWritableDatabase();
base.delete("mypro","id=?",new String[]{pe_id});
}
}
Начинаю мое приложение 1-й раз, я нажал на кнопку "Профиль", нет данных поэтому он показывает тост как «некоторая ошибка отображения», затем я нажимаю кнопку «Редактировать» и добавляю данные, такие как имя, номер и т. д. кнопку «Сохранить», он сохраняется. затем я вернусь к макету профиля, нажав «назад к профилю», и я могу увидеть мой добавленный профиль или данные. затем, если я вернусь к основному макету, нажав «back to main», и если снова я нажму кнопку «профиль», тогда он также приведет меня к макету профиля с добавленными данными, которые были получены каждый раз из базы данных. Но здесь возникает проблема, когда я закрываю свое приложение и запускаю его снова, нажимаю кнопку «Профиль», а затем не показываю ничего, даже значения базы данных были в базе данных, но когда я снова запускаю свое приложение, он не может получить данные, которые Я ранее хранил и показывал тост как «некоторая ошибка отображения». Я думал, чтобы проверить ошибки и поставить некоторые «Log», то я вижу, файл журнала, когда я работал с приложением, то он показывает последнее значение как:
Log.d("cmm1", "a");
После того, что мое приложение остановлен и никаких журналов, созданный в журнале файл. Это означает, что я получаю ошибку в то время как я работал с:
String name= c.getString(0);
Я не знаю, что это проблема с этим кодом или может быть у меня есть какие-либо другие проблемы. Пожалуйста, помогите мне. Я что-то упускаю?
k Я редактировал код с намерением начать новую деятельность. У меня есть и другой код, но вырезать вставку кода, чтобы упростить просмотр и найти ошибку. Вот мой код прямо сейчас:
(первая активность с помощью кнопки профиля, нажав кнопку профиля принять к другой деятельности с целью)
MainActivity.Класс:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);phelper=new pdatabasehelper(this);
}
public void editm(View w){
Intent pro=new Intent(MainActivity.this,profile.class);
startActivity(new Intent(pro));
}
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
(показать профиль)
profile.class:
public class profile extends Activity
{
pdatabasehelper phelper;
TextView ptn;
TextView kt0;
TextView kt1;
TextView kt2;
TextView kt3;TextView kt4;TextView kt5;TextView kt6;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Toast.makeText(getBaseContext(), "Profile View", 5).show();
setContentView(R.layout.profilec);
Log.d("oncreate5", "5");
ptn=(TextView)findViewById(R.id.jprofile);
Log.d("oncreate5.666", "5.6");
phelper=new pdatabasehelper(this);
Log.d("oncreate5", "6");
pshow();
Log.d("oncreate5", "7");
Toast.makeText(getBaseContext(), "helloo new", 10).show();
}
public void pshow(){
Log.d("6", "a");
//Toast.makeText(getBaseContext(), "helloo new", 10).show();
onStartp();
Log.d("7", "a");
Cursor c=null;
Log.d("8", "a");
Log.d("9,10", "a");
try{
Log.d("55555", "entering to db");
String ptrm = null;
c=phelper.pshowrecord(ptrm);
Log.d("11", "a");
if(c!=null){
Log.d("c1", "a");
c.moveToFirst();
Log.d("cmm1", "a");
String name= c.getString(0);
Log.d("cn1", "a");
kt1.setText(name);
Log.d("c2", "a");
kt2.setText(c.getString(1));
Log.d("c3", "a");
kt3.setText(c.getString(2));
Log.d("12", "a");
kt4.setText(c.getString(3));
kt5.setText(c.getString(4));
kt6.setText(c.getString(5));
Log.d("13", "a");
c.close();
Log.d("14", "a");
}
else{
Toast.makeText(this,"Add a Contact", 50).show();
}
}catch(Exception e){
Toast.makeText(getBaseContext(), "SOme display error", 20).show();
}
}
public void calledit(View w)
{
Intent i=new Intent(this,editp.class);
startActivity(i);
//setContentView(R.layout.editc);
}
public void onStartp(){
kt1=(TextView)findViewById(R.id.ptext3);
kt2=(TextView)findViewById(R.id.ptext5);
kt3=(TextView)findViewById(R.id.ptext7);
kt4=(TextView)findViewById(R.id.ptext9);
kt5=(TextView)findViewById(R.id.ptext11);
kt6=(TextView)findViewById(R.id.ptext13);
}
}
(Чтобы добавить или изменить профиль с кнопки сохранения) editp.class
public class editp extends Activity {
EditText ed1;
EditText ed2;
EditText ed3;
EditText ed4;
EditText ed5;
EditText ed6;
TextView ptn;
pdatabasehelper phelper;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.editc);
phelper=new pdatabasehelper(this);
}
public void onstart(){
ed1=(EditText)findViewById(R.id.jname);
ed2=(EditText)findViewById(R.id.jeditText1);
ed3=(EditText)findViewById(R.id.jeditText2);
ed4=(EditText)findViewById(R.id.jeditText3);
ed5=(EditText)findViewById(R.id.jeditText4);
ed6=(EditText)findViewById(R.id.jaeditText1);
ptn=(TextView)findViewById(R.id.jprofile);
}
public void savemethj(View w)
{
onstart();
Log.d("tag000", "before allgettext");
long a;
Log.d("tag01111", "afterlong");
String ptrm = ptn.getText().toString();
try{
phelper.deleterecord(ptrm);
Log.d("tag02222", "be");
String edt1=ed1.getText().toString();
String edt2=ed2.getText().toString();
Log.d("tag03333", "be11111");
String edt3=ed3.getText().toString();
String edt4=ed4.getText().toString();
Log.d("tag0444444", "be2222");
String edt5=ed5.getText().toString();
String edt6=ed6.getText().toString();
Log.d("tag11111", "after allgettext");
phelper.deleterecord(ptrm);
a=phelper.insertpro(ptrm,edt1, edt2, edt3, edt4, edt5, edt6);
if(a>=1){
Toast.makeText(getBaseContext(),a+ "Record Successfully Saved", 30).show();
}
else{
Toast.makeText(getBaseContext(), "Not Saved", 30).show();
}}
catch(Exception e)
{
Toast.makeText(getBaseContext(), "Errrrrrrrrrrr", Toast.LENGTH_SHORT).show();
}
}
}
Мои записи сохраняются в базе данных, я вижу их, но я не могу посмотреть эти записи в профиле t Я сохранил первый раз, даже я вызвал pshow(), чтобы извлечь запись из базы данных. Я хочу, чтобы каждый раз, когда я приходил в профиль, я мог видеть, что эти записи либо возвращаются с страницы редактирования, либо нажимают кнопку «Профиль» на главной странице или в макете. , пожалуйста, помогите мне найти ошибку. и извините команды Log, которые я указал, чтобы увидеть ошибки. и, кроме того, я получаю сообщение об ошибке здесь:
String name= c.getString(0);
, потому что последний журнал я вижу во время выполнения программы в лог-файле:
Log.d("cmm1", "a");
После этого сообщение об ошибке отображается на экране с тостом, как «некоторые ошибки отображения ».
Я вижу несколько проблем ... в первую очередь необходимо унд выдержать жизненный цикл Android-активности. Затем вам нужно учиться на «намерениях». developer.android.com - ваш новый любимый сайт ... –
Хорошо, мистер Маккензи, я поеду за ним. Но не могли бы вы рассказать мне о проблеме? Потому что мне нужно заполнить этот код для моей школы? – Avin
Самая большая проблема в том, что вам нужно фактически начать новую деятельность, используя намерение вместо изменения вида содержимого. –