第一次做Andriod移動開發 的一些總結
1.先說說SQlite 吧,如何實現同一應用的多個活動介面訪問資料庫的問題
再談一談自己遇到的一些問題吧:
2.SQlite資料庫我沒有弄視覺化的那一部分,相當於盲“點”。
如何保證知道自己成功的建立了資料庫呢? Log.i()//寫在資料庫的建立函式中即可
相同的方法保證了自己知道是否打開了已有的資料庫,這個得說到兩個回撥函數了。onCreate()以及onOpen()
第一個在建立資料庫的時候呼叫,第二個在開啟資料庫的時候呼叫。然後利用除錯的Log資訊即可判斷。
3.在設定佈局介面的時候,由於設定成了另一個Layout,導致了editText 空物件的問題,一開始我以為是引數為空個,後來除錯,發現傳入的引數是有值的,然後我就從頭看了幾遍程式碼,才發現是佈局設定錯誤了,這個在多個佈局名稱相似時,以後一定要注意。
package com.example.lingcheng.e_here;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.Toast;
註冊頁面建立了資料庫:
加紅的部分,保證了訪問同一個資料庫。
只需要關注標記部分即可。
import java.lang.*;
public class Register_activity extends AppCompatActivity {
private EditText editText_number;
private EditText editText_password;
private EditText edit_name;
private EditText edit_class;
private RadioButton radioButton_student;
private RadioButton radioButton_teacher;
private String job;
private Context mContext;
private MySQLiteHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register_activity);
mContext = getApplicationContext();
helper=DBManage.getIntance(mContext);
editText_password=findViewById(R.id.editText_password);
editText_number=findViewById(R.id.editText_number);
edit_name=findViewById(R.id.edit_name);
edit_class=findViewById(R.id.edit_class);
radioButton_student=findViewById(R.id.radio_stu) ;
radioButton_teacher=findViewById(R.id.radio_teacher) ;
RadioButton.OnClickListener radioButtonListener = new RadioButton.OnClickListener(){
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.radio_stu:
job="student";
break;
case R.id.radio_teacher:
job="teacher";
break;
}
}};
radioButton_student.setOnClickListener(radioButtonListener);
radioButton_teacher.setOnClickListener(radioButtonListener);
Button button_confirm=findViewById(R.id.button_confirm) ;
Button button_cancel=findViewById(R.id.button_cancle) ;
Button.OnClickListener buttonListener = new Button.OnClickListener(){
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button_confirm:
User user=new User();
user.number_id=Integer.parseInt(editText_number.getText().toString());
user.name=edit_name.getText().toString();
user.password=editText_password.getText().toString();
user.classes=edit_class.getText().toString();
user.job=job;
SQLiteDatabase db=helper.getWritableDatabase();
DBManage.Insert(db,user,mContext);
db.close();
break;
case R.id.button_cancle:
Intent intent=new Intent(Register_activity.this,Loading.class);
// intent.setAction("android.intent.action.MAIN");
startActivity(intent);
break;
}
}};
button_confirm.setOnClickListener(buttonListener);
button_cancel.setOnClickListener(buttonListener);
}
}
資料庫的另一個使用介面
package com.example.lingcheng.e_here;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class UI_stu extends AppCompatActivity {
private EditText editText_number;
private EditText editText_name;
private EditText editText_class;
private MySQLiteHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_stu);
final Button button01 = (Button)findViewById(R.id.Button01);
final Button button02 = (Button)findViewById(R.id.Button02);
button01.setText("學生簽到!");
button02.setText("取消簽到!");
final EditText editText_number = (EditText)findViewById(R.id.EditText_number);
final EditText editText_name = (EditText)findViewById(R.id.EditText_name);
final EditText editText_class = (EditText)findViewById(R.id.EditText_class);
Intent intent=getIntent();
String account=intent.getStringExtra("account");
helper=DBManage.getIntance(getApplicationContext());
SQLiteDatabase db=helper.getReadableDatabase();
Cursor cursor=db.rawQuery("select _name,_class from Teacher_stu where _id= ?",new String[]{String.valueOf(account)});
cursor.moveToFirst();
if (cursor != null && cursor.getCount() > 0) {
Log.i("tips","Find it");
}
String msg=cursor.getString(cursor.getColumnIndex("_name"));
if(msg!=null){
Log.i("not null","not null");
editText_name.setText(msg);
}
String msg1=cursor.getString(cursor.getColumnIndex("_class"));
if(msg1!=null){
Log.i("not null","not null");
editText_class.setText(msg1);
}
if(account!=null){
Log.i("not null","not null");
editText_number.setText(account);
}
db.close();
button01.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Toast.makeText(UI_stu.this,"簽到成功",Toast.LENGTH_SHORT).show();
}
});
button02.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Toast.makeText(UI_stu.this,"簽到失敗",Toast.LENGTH_SHORT).show();
}
});
}
}