android学习记录(九)

从文件中读取数据.

    private fun load(): String{
        val content=StringBuffer()
        try {
            val input=openFileInput("data")
            val reader=BufferedReader(InputStreamReader(input))
            reader.use {
                reader.forEachLine {
                    content.append(it)
                }
            }
        }catch (e: IOException){
            e.printStackTrace()
        }
    return content.toString()
    }

在Oncreate中添加相关的文件读取代码

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val inputText=load()
        if(inputText.isNotEmpty()){
            editText.setText(inputText)
            editText.setSelection(inputText.length)//将光标设置到文本末尾
            Toast.makeText(this,"Restoring succeeded",Toast.LENGTH_SHORT).show()
        }
    }

SharedPreferences存储

将数据存储到SharedPreferences中.
    saveButton.setOnClickListener {
            val editor=getSharedPreferences("data", Context.MODE_PRIVATE).edit()
            editor.putString("name","Tom")
            editor.putInt("age",28)
            editor.putBoolean("married",false)
            editor.apply()//提交
        }
从SharedPreferences中读取数据
     restoreButton.setOnClickListener {
            val prefs=getSharedPreferences("data",Context.MODE_PRIVATE)
            val name=prefs.getString("name","")
            val age=prefs.getInt("age",0)
            val married=prefs.getBoolean("married",false)
            Log.d("MainActivity","name is $name")
            Log.d("MainActivity","age is $age")
            Log.d("MainActivity","married is $married")
        }
运行截图

在这里插入图片描述

实现记住密码功能

由于之前BroadcastBestPractice中有相关的登录界面因此直接在这个项目中进行修改.

添加checkBox
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/rememberPass"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:text="Remember password"/>
    </LinearLayout>
判断是否记住了密码

登陆前

     val prefs=getPreferences(Context.MODE_PRIVATE)//默认文件名为类名
        val isRemember=prefs.getBoolean("remember_password",false)//如果存在remember_password 那么就是true
        if(isRemember){
            val account=prefs.getString("account","")
            val password=prefs.getString("password","")
            accountEdit.setText(account)
            passwordEdit.setText(password)
            rememberPass.isChecked=true
        }

登录时,如果选择了记住密码,那么此时应该要存储到Preferences文件当中.

if(account=="admin"&&password=="123456"){
                val editor=prefs.edit()
                if(rememberPass.isChecked){
                    editor.putBoolean("remember_password",true)
                    editor.putString("account",account)
                    editor.putString("password",password)
                }else{
                    editor.clear()
                }
                editor.apply()

SQLite数据库存储

android为方便管理数据库,专门提供了一个SQLiteOpenHelper帮助类.
SQLiteOpenHelper是一个抽象类,需要创建一个子类去继承它,并且重写其中的两个抽象方法: onCreate()和onUpgrade(),SQLiteOpenHelper中还有两个重要的实例方法(必须创建实例对象才能调用,及一般方法) getReadableDatabase() 和getWritableDatabase()这两个方法.
SQLiteOpenHelper的构造方法要 提供4个参数. Context,数据库名称,自定义Cursor,当前数据库的版本号(用于对数据库进行升级操作).

创建子类继承SQLiteOpenHelper
package com.example.databasetest

import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
import android.widget.Toast

class MyDatabaseHelper(val context: Context,name: String,version: Int) : SQLiteOpenHelper(context,name,null,version) {
    private val createBook="create table Book("+" id integer primary key autoincrement,"+"author text,"+"price real,"+"pages integer,"+"name text)"
    override fun onCreate(db: SQLiteDatabase) {
        db.execSQL(createBook)
        Toast.makeText(context,"Create succeeded",Toast.LENGTH_SHORT).show()
    }
    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        
    }
}//MyDatabaseHelper 继承抽象类SQLiteOpenHelper,并且重写其中的两个抽象方法
接着添加一个按钮作为触发器(创建一个MyDatabseHelper对象,并且调用getWritableDatabase()方法判断数据库是否存在,如果不存在会接着调用onCreate方法)
val dbHelper=MyDatabaseHelper(this,"BookStore.db",1)
        createDatabase.setOnClickListener {
            dbHelper.writableDatabase
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值