1. 程式人生 > >第一次做Andriod移動開發 的一些總結

第一次做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();
            }
        });


    }

}