zoukankan      html  css  js  c++  java
  • Android四大组件之SharedPreferences的使用

    用一个小例子来使用SharedPreferences

    看下运行结果

    输入账号与密码

    当我返回重新打开时,用户名会自动填写~这是因为我点击了CheckBox

    下面看下实现方法

    第一步:对布局进行编辑

      <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/et1"
            android:layout_toEndOf="@+id/tv1" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="用户名:"
            android:id="@+id/tv1"
            android:layout_alignBaseline="@+id/et1"
            android:layout_alignBottom="@+id/et1"
            android:layout_alignParentStart="true" />
    
        <EditText
            android:id="@+id/et2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/et1"
            android:layout_toEndOf="@+id/tv2" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密   码:"
            android:id="@+id/tv2"
            android:layout_alignBaseline="@+id/et2"
            android:layout_alignBottom="@+id/et2"
            android:layout_alignParentStart="true" />
    
        <CheckBox
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/cb"
            android:checked="false"
            android:text="保存用户名"
            android:layout_below="@+id/et2"
            android:layout_alignParentStart="true"
            android:layout_marginTop="34dp" />
    
        <Button
            android:onClick="doClick"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="登陆"
            android:layout_alignBaseline="@+id/button"
            android:layout_alignBottom="@+id/button"
            android:layout_toStartOf="@+id/button"
            android:id="@+id/button2" />
    
        <Button
            android:onClick="doClick"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="取消"
            android:layout_marginTop="29dp"
            android:layout_marginStart="13dp"
            android:id="@+id/button"
            android:layout_below="@+id/cb"
            android:layout_toEndOf="@+id/cb" />
    

    第二步:来到Mactivity.java进行编写

    public class MainActivity extends AppCompatActivity {
    
        private EditText et1,et2;
        private CheckBox cb;
        private SharedPreferences Preferences;
        private SharedPreferences.Editor editor;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            et1= (EditText) findViewById(R.id.et1);
            et2= (EditText) findViewById(R.id.et2);
            cb= (CheckBox) findViewById(R.id.cb);
            //获取SharedPreferences对象
            Preferences=getSharedPreferences("UserIfo",MODE_PRIVATE);
            //启动编辑
            editor=Preferences.edit();
            //第二次登陆时直接从Preferences中赋值给name
            String name=Preferences.getString("userName","");
            if (name==null){
                //若是第一次登陆则name为空,此时cb不为勾选状态
                cb.setChecked(false);
            }else {
                //若是不是第一次登陆则name不为空,此时设置cb为勾选状态
                cb.setChecked(true);
                //将name从Preferences获取出来赋值给et1
                et1.setText(name);
            }
        }
        public void doClick(View view){
            switch (view.getId()){
                case R.id.button2:
                    //获取EditText控件上所输入的值
                    String user=et1.getText().toString().trim();
                    String press=et2.getText().toString().trim();
                    //判断下EditText输入的账号与密码是否一致
                    if ("admin".equals(user)&&"123456".equals(press)){
                        //判定Checked是否勾选了
                        if (cb.isChecked()){
                            //勾选了就把用户名存到editor中去
                            editor.putString("userName",user);
                            //提交下
                            editor.commit();
                        }else {
                            //若没有勾选,则把用户名给移除
                            editor.remove("userName");
                            //然后再提交下
                            editor.commit();
                        }
                        Toast.makeText(MainActivity.this, "登陆成功!", Toast.LENGTH_SHORT).show();
    
                    }else {
                        Toast.makeText(this, "禁止登陆", Toast.LENGTH_SHORT).show();
                    }
                    break;
            }
        }
    }
    
  • 相关阅读:
    file is universal (3 slices) but does not contain a(n) armv7s slice error for static libraries on iOS
    WebImageButton does not change images after being enabled in Javascript
    ajax OPTION
    编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
    获取海洋天气预报
    C#线程系列教程(1):BeginInvoke和EndInvoke方法
    js控制只能输入数字和小数点
    Response.AddHeader(,)
    ManualResetEvent的理解
    Convert.ToInt32、int.Parse(Int32.Parse)、int.TryParse、(int) 区别
  • 原文地址:https://www.cnblogs.com/zyl222/p/7599956.html
Copyright © 2011-2022 走看看