第一步:在xml文件上界面佈局
這邊採用LinearLayour佈局,添加3個按鈕來實現界面的跳轉,代碼以下:php
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <Button android:id="@+id/b1" android:layout_marginTop="50dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="內置存儲"/> <Button android:id="@+id/b6" android:layout_marginTop="50dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAllCaps="false" android:text="SharedPreferences存儲"/> <Button android:id="@+id/b7" android:layout_marginTop="50dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:textAllCaps="false" android:text="SQLite存儲"/> </LinearLayout>
界面截圖:
第二步:在Mainactivity.java完成功能的實現
找到ID並綁定
3個按鈕的監聽事件(界面的跳轉)java
b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(MainActivity.this,Main2Activity.class); startActivity(intent); } }); b6.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(MainActivity.this,Main3Activity.class); startActivity(intent); } }); b7.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(MainActivity.this,Main4Activity.class); startActivity(intent); } });
第三步:各功能的實現
①、內部文件存儲
建立一個xml文件(activity_main2)和一個java文件(Main2Activity),來實現內部文件存儲界面的佈局和功能的實現。
第一:這邊的佈局採用LinearLayout佈局,首先添加一個EditText控件來輸入咱們要保存的信息,在添加3個按鈕的實現不一樣的功能,點擊第一個按鈕把當前輸入的信息保存到手機內部文件夾上,第二個按鈕打開當前文件夾顯示保存的信息,第三個按鈕刪除手機內部文件夾下所保存的文件,代碼以下:android
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".Main2Activity"> <EditText android:id="@+id/e1" android:layout_marginTop="50dp" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20dp" /> <Button android:id="@+id/b2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:text="保存信息"/> <Button android:id="@+id/b3" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="獲取信息"/> <Button android:id="@+id/b4" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="刪除文件"/> <TextView android:id="@+id/t1" android:layout_width="match_parent" android:textSize="30sp" android:layout_marginTop="20dp" android:text="" android:gravity="center" android:layout_height="wrap_content"/> </LinearLayout>
界面截圖:
第二:內部文件存儲功能的實現web
按鈕1(b2)保存信息數據庫
b2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { try { } catch (Exception e) { e.printStackTrace(); } } });
b2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { try { OutputStream outputStream=openFileOutput("myfile",MODE_PRIVATE); //MODE_PRIVATE,覆蓋原有的文件;MODE_APPEND,內容追加到原來的文件上。 if(e1.getText().toString().equals("")) { Toast.makeText(Main2Activity.this,"當前爲空,請輸入信息",Toast.LENGTH_SHORT).show(); return; } outputStream.write(e1.getText().toString().getBytes()); outputStream.flush();; outputStream.close(); Toast.makeText(Main2Activity.this,"保存信息成功",Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); Toast.makeText(Main2Activity.this,"保存信息成功失敗",Toast.LENGTH_SHORT).show(); } } });
按鈕2(b3)獲取信息app
b3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { try { } catch (Exception e) { e.printStackTrace(); } } });
b3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { StringBuffer stringBuffer=new StringBuffer(); try { InputStream inputStream=openFileInput("myfile"); BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(inputStream)); String cout=null; while((cout=bufferedReader.readLine())!=null) { stringBuffer.append(cout); } Toast.makeText(Main2Activity.this,"獲取信息成功",Toast.LENGTH_SHORT).show(); t1.setText(stringBuffer.toString()); bufferedReader.close(); } catch (Exception e) { e.printStackTrace(); Toast.makeText(Main2Activity.this,"獲取信息失敗",Toast.LENGTH_SHORT).show(); } } });
按鈕3(b4)刪除文件ide
b4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { boolean b=deleteFile("myfile"); if(b==true) { Toast.makeText(getApplicationContext(), "刪除文件成功", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getApplicationContext(), "刪除文件失敗", Toast.LENGTH_SHORT).show(); } } });
界面截圖:
②、SharedPreferences存儲
建立一個xml文件(activity_main3)和一個java文件(Main3Activity),來實現內部文件存儲界面的佈局和功能的實現。
第一:這邊的佈局採用LinearLayout佈局,首先添加兩個EditText控件來輸入帳號和密碼,在添加3個按鈕的實現不一樣的功能,點擊第一個按鈕註冊帳號,第二個按鈕從新輸入信息,第三個按鈕登錄帳號,代碼以下:svg
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" tools:context=".Main3Activity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="20dp" android:textSize="20sp" android:text="用戶名:"/> <EditText android:id="@+id/username" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="請輸入帳號" android:singleLine="true" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="20dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="20dp" android:textSize="20sp" android:text="密碼:"/> <EditText android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="請輸入密碼" android:inputType="textPassword" android:singleLine="true" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal"> <Button android:id="@+id/login" android:layout_width="0dp" android:layout_weight="1" android:layout_gravity="center" android:layout_height="wrap_content" android:text="註冊"/> <Button android:id="@+id/delect" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="從新輸入"/> </LinearLayout> <Button android:id="@+id/see" android:layout_width="100dp" android:layout_marginTop="20dp" android:layout_height="wrap_content" android:text="登錄"/> </LinearLayout>
界面截圖:
第二:SharedPreferences存儲功能的實現函數
獲取到當前的id並綁定
佈局
定義一個SharedPreferences
private SharedPreferences sharedPreferences;
3個按鈕的監聽事件
按鈕1(login)註冊帳號
login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(username.getText().toString().equals("")||password.getText().toString().equals("")) { Toast.makeText(Main3Activity.this,"不能爲空!",Toast.LENGTH_SHORT).show(); return; } sharedPreferences=getSharedPreferences("data",Context.MODE_PRIVATE); SharedPreferences.Editor editor=sharedPreferences.edit(); editor.putString("username",username.getText().toString()); editor.putString("password",password.getText().toString()); editor.apply(); Toast.makeText(Main3Activity.this,"註冊成功!",Toast.LENGTH_SHORT).show(); } });
按鈕2(delect)刪除文件,從新輸入
delect.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { SharedPreferences.Editor editor=sharedPreferences.edit(); editor.clear(); editor.apply(); username.setText(""); password.setText(""); Toast.makeText(Main3Activity.this,"從新輸入",Toast.LENGTH_SHORT).show(); } });
按鈕3(see)跳轉到登錄帳號界面
建立一個xml文件(activity_main5)和一個java文件(Main5Activity),來實現登錄帳號功能
第一:這邊的佈局採用LinearLayout佈局,首先添加兩個EditText控件來輸入帳號和密碼,在添加1個按鈕的實現帳號登錄,代碼以下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" tools:context=".Main5Activity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="20dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="帳號:"/> <EditText android:id="@+id/zh1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp" android:text=""/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="20dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="密碼:"/> <EditText android:id="@+id/mm1" android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp" android:text=""/> </LinearLayout> <Button android:id="@+id/success" android:layout_width="100dp" android:layout_height="wrap_content" android:text="確認"/> </LinearLayout>
界面截圖:
第二:功能實現(Main5Activity)
獲取到當前的id並綁定
獲取註冊過的帳號和密碼
按鈕的監聽事件(判斷帳號密碼是否爲空和帳號密碼是否存在)
success.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(zh1.getText().toString().equals("")||mm1.getText().toString().equals("")) { Toast.makeText(Main5Activity.this,"不能爲空!",Toast.LENGTH_SHORT).show(); return; } else if(zh1.getText().toString().equals(userzh)&&mm1.getText().toString().equals(usermm)) { Toast.makeText(Main5Activity.this,"登錄成功",Toast.LENGTH_SHORT).show(); } else { Toast.makeText(Main5Activity.this,"帳號或密碼錯誤",Toast.LENGTH_SHORT).show(); } } });
界面截圖:
③、SQLite存儲
建立一個xml文件(activity_main4)和一個java文件(Main4Activity),來實現SQLite存儲界面的佈局和功能的實現。
第一:這邊的佈局採用LinearLayout佈局,首先添加兩個EditText控件來輸入帳號和密碼,在添加2個按鈕的實現不一樣的功能,點擊第一個按鈕註冊帳號,第二個按鈕從新輸入,以後在定義兩個TextView來顯示註冊的帳號密碼,代碼以下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" tools:context=".Main4Activity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="20dp" android:textSize="20sp" android:text="用戶名:"/> <EditText android:id="@+id/usernames" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="請輸入帳號" android:singleLine="true" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="20dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="20dp" android:textSize="20sp" android:text="密碼:"/> <EditText android:id="@+id/passwords" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="請輸入密碼" android:inputType="textPassword" android:singleLine="true" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal"> <Button android:id="@+id/register" android:layout_width="100dp" android:layout_gravity="center" android:layout_height="wrap_content" android:text="註冊"/> <Button android:id="@+id/again" android:layout_width="100dp" android:layout_height="wrap_content" android:layout_marginLeft="20dp" android:text="從新輸入"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_marginTop="50dp" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="帳號:"/> <TextView android:id="@+id/zh" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text=""/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="50dp" android:textSize="20sp" android:text="密碼:"/> <TextView android:id="@+id/mm" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text=""/> </LinearLayout> </LinearLayout>
界面截圖:
第二:建立數據庫文件(MyDateBase)
public class MyDateBase { }
繼承SQLiteOpenHelper
public class MyDateBase extends SQLiteOpenHelper { }
鼠標移至SQLiteOpenHelper按下Alt+Enter,選擇第一個,以後按下ok
鼠標移至SQLiteOpenHelper按下Alt+Enter,選擇第一個,以後按下ok
建立一個命名爲first的數據表(id,username,password)
private String createAppTable="create table first(id integer primary key autoincrement,username varchar(20),password varchar(20))";
在onCreate函數中執行SQL語句
sqLiteDatabase.execSQL(createAppTable); sqLiteDatabase.execSQL("insert into first(id,username,password) values(?,?,?)",new String[]{ "1","",""}); System.out.println("建立數據庫成功");
根據Id找到帳號和密碼並更新帳號和密碼,在倒數第二個花括號添加類
public String getusernameById(SQLiteDatabase db,String id)//根據Id找到帳號 { Cursor cursor=db.rawQuery("select * from first where id=?",new String[]{ id}); if(cursor.moveToNext()) { return cursor.getString(cursor.getColumnIndex("username")); } return ""; } public void updateusername(SQLiteDatabase db,String id,String username)//更新帳號 { db.execSQL("update first set username=? where id=?",new String[]{ username,id}); } public String getpasswordById(SQLiteDatabase db,String id)//根據Id找到密碼 { Cursor cursor=db.rawQuery("select * from first where id=?",new String[]{ id}); if(cursor.moveToNext()) { return cursor.getString(cursor.getColumnIndex("password")); } return ""; } public void updatepassword(SQLiteDatabase db,String id,String password)//更新密碼 { db.execSQL("update first set password=? where id=?",new String[]{ password,id}); } public void delectdb(SQLiteDatabase db,String id)//刪除數據表中的信息 { db.execSQL("delete from first where id=?",new String[]{ id}); }
第三:返回Main4Activity文件,實現功能的實現
獲取到當前的id並綁定
並添加SQLiteDatabase和MyDateBase
訪問數據表
更新用戶名和密碼
public void UpdateUserName()//更新帳號 { myDateBase.updateusername(db,"1",usernames.getText().toString()); } public void UpdatePassWord()//更新密碼 { myDateBase.updatepassword(db,"1",passwords.getText().toString()); }
按鈕的監聽事件
register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if(passwords.getText().toString().equals("")||usernames.getText().toString().equals("")) { Toast.makeText(Main4Activity.this,"註冊失敗,不能爲空!",Toast.LENGTH_SHORT).show(); return; } UpdateUserName(); UpdatePassWord(); Toast.makeText(Main4Activity.this,"註冊成功!",Toast.LENGTH_SHORT).show(); zh.setText(usernames.getText().toString()); mm.setText(passwords.getText().toString()); } }); again.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { usernames.setText(""); passwords.setText(""); } });
獲取帳號和密碼並顯示
public void getUserName() { //獲取用戶名 String user=myDateBase.getusernameById(db, "1"); zh.setText(user); } public void getPassword() { //獲取密碼 String pass=myDateBase.getpasswordById(db, "1"); mm.setText(pass); }
刪除數據表的信息
public void DelectDb() { myDateBase.delectdb(db,"1"); }
本項目的源代碼連接: https://download.csdn.net/download/Scxioi0/12911350