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();
}
});
}
}