2013-05-18 2 views
-1

У меня есть три макета:Выборка данных из выпуска базы данных в Android

  1. Main Layout (с кнопкой "Профиль")

  2. расположение профилей (с TextView, чтобы показать данные из базы данных и две кнопки названный как «Edit» и «назад к Main»)

  3. редактирование макета (с 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"); 

После этого сообщение об ошибке отображается на экране с тостом, как «некоторые ошибки отображения ».

+0

Я вижу несколько проблем ... в первую очередь необходимо унд выдержать жизненный цикл Android-активности. Затем вам нужно учиться на «намерениях». developer.android.com - ваш новый любимый сайт ... –

+0

Хорошо, мистер Маккензи, я поеду за ним. Но не могли бы вы рассказать мне о проблеме? Потому что мне нужно заполнить этот код для моей школы? – Avin

+0

Самая большая проблема в том, что вам нужно фактически начать новую деятельность, используя намерение вместо изменения вида содержимого. –

ответ

0

У вас есть много работы, чтобы сделать действительно, но подумайте об этом.
Вместо:

public void editm(View w){ 
setContentView(R.layout.profilec); 
    try{ 
     pshow(); 
    } 
    catch(Exception e){ 
     Toast.makeText(getBaseContext(), "pshow method", 5).show(); 
    } 
} 

Вы хотите:

Intent edit_profile_intent = new Intent(); 
edit_profile_intent.setClass(getApplicationContext(), EditProfileActivity.class); 
startActivity(edit_profile_intent); 

Так что вам нужно будет сделать несколько вещей: Создать этот новый класс активности, объявить его в манифесте, Редактирование макета включить соответствующий просмотры и т.д.

Позволяют исправить свой стек активности, а затем беспокоиться о ваших данных проблемах ...

+0

Я опубликовал отредактированный код в одном комментарии через другого пользователя. Пожалуйста, смотрите. – Avin

Смежные вопросы