Android开发之完成登陆界面的数据保存回显操作实例

 更新时间:2015年12月24日 15:12:46   作者:sgx425021234  
这篇文章主要介绍了Android开发之完成登陆界面的数据保存回显操作实现方法,结合完整实例形式较为详细的分析了Android针对登录数据的保存及回显操作技巧,需要的朋友可以参考下

本文实例讲述了Android开发之完成登陆界面的数据保存回显操作。分享给大家供大家参考,具体如下:

LoginActivity.java:

package com.example.login; 
import java.util.Map; 
import android.app.Activity; 
import android.os.Bundle; 
import android.text.TextUtils; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.Toast; 
import com.example.login.service.FileService; 
public class LoginActivity extends Activity { 
  public EditText edit_name,edit_pass; 
  public Button btn_login; 
  public CheckBox box_remeber; 
  public FileService fileService; 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 
    fileService=new FileService(this); 
    edit_name=(EditText) findViewById(R.id.edit_name); 
    edit_pass=(EditText) findViewById(R.id.edit_pass); 
    btn_login=(Button) findViewById(R.id.btn_login); 
    box_remeber=(CheckBox) findViewById(R.id.cbx_remember); 
    btn_login.setOnClickListener(new MyOnClickListener()); 
    Map<String, String> map=fileService.readFile("private.txt"); 
    if(map!=null){ 
      edit_name.setText(map.get("name")); 
      edit_pass.setText(map.get("pass")); 
    } 
  } 
  @Override 
  public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.login, menu); 
    return true; 
  } 
  class MyOnClickListener implements View.OnClickListener{ 
    @Override 
    public void onClick(View v) { 
      int id=v.getId(); 
      switch (id) { 
      case R.id.btn_login: 
        String name=edit_name.getText().toString(); 
        String pass=edit_pass.getText().toString(); 
        if(TextUtils.isEmpty(name)){ 
          Toast.makeText(LoginActivity.this, "用户名不能为空", Toast.LENGTH_SHORT).show(); 
          return; 
        }else if(TextUtils.isEmpty(pass)){ 
          Toast.makeText(LoginActivity.this, "密码不能为空", Toast.LENGTH_SHORT).show(); 
          return; 
        }else{ 
          if(box_remeber.isChecked()){ 
            LoginActivity.this.fileService.saveToRom(name, pass, "private.txt"); 
            Toast.makeText(LoginActivity.this, "用户名和密码已保存", Toast.LENGTH_SHORT).show(); 
          }else{ 
            Toast.makeText(LoginActivity.this, "用户名和密码不需要保存", Toast.LENGTH_SHORT).show(); 
          } 
        } 
        break; 
      default: 
        break; 
      } 
      /*if(id==btn_login.getId()){ 
        String name=edit_name.getText().toString(); 
        String pass=edit_pass.getText().toString(); 
        if(TextUtils.isEmpty(name)){ 
          Toast.makeText(LoginActivity.this, "用户名不能为空", Toast.LENGTH_SHORT).show(); 
          return; 
        }else if(TextUtils.isEmpty(pass)){ 
          Toast.makeText(LoginActivity.this, "密码不能为空", Toast.LENGTH_SHORT).show(); 
          return; 
        }else{ 
          if(box_remeber.isChecked()){ 
            LoginActivity.this.fileService.saveToRom(name, pass, "private.txt"); 
            Toast.makeText(LoginActivity.this, "用户名和密码已保存", Toast.LENGTH_SHORT).show(); 
          }else{ 
            Toast.makeText(LoginActivity.this, "用户名和密码不需要保存", Toast.LENGTH_SHORT).show(); 
          } 
        } 
      }*/ 
    } 
  } 
}

FileService.java:

package com.example.login.service; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.util.HashMap; 
import java.util.Map; 
import com.example.login.utils.StreamTools; 
import android.content.Context; 
public class FileService { 
  public Context context; 
  public FileService(Context context) { 
    this.context = context; 
  } 
  public boolean saveToRom(String name,String pass,String fileName){ 
    try{ 
      FileOutputStream fos=context.openFileOutput(fileName, Context.MODE_PRIVATE); 
      String result=name+":"+pass; 
      fos.write(result.getBytes()); 
      fos.flush(); 
      fos.close(); 
    }catch(Exception e){ 
      e.printStackTrace(); 
      return false; 
    } 
    return true; 
  } 
  public Map<String,String> readFile(String fileName){ 
    Map<String,String> map=null; 
    try{ 
      FileInputStream fis=context.openFileInput(fileName); 
      String value=StreamTools.getValue(fis); 
      String values[]=value.split(":"); 
      if(values.length>0){ 
        map=new HashMap<String, String>(); 
        map.put("name", values[0]); 
        map.put("pass", values[1]); 
      } 
    }catch(Exception e){ 
      e.printStackTrace(); 
    } 
    return map; 
  } 
}

StreamTools.java:

package com.example.login.utils; 
import java.io.ByteArrayOutputStream; 
import java.io.FileInputStream; 
public class StreamTools { 
  public static String getValue(FileInputStream fis) throws Exception{ 
    ByteArrayOutputStream stream=new ByteArrayOutputStream(); 
    byte[] buffer=new byte[1024]; 
    int length=-1; 
    while((length=fis.read(buffer))!=-1){ 
      stream.write(buffer,0,length); 
    } 
    stream.flush(); 
    stream.close(); 
    String value=stream.toString(); 
    return value; 
  } 
}

login_activity.xml:

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin" 
  android:paddingLeft="@dimen/activity_horizontal_margin" 
  android:paddingRight="@dimen/activity_horizontal_margin" 
  android:paddingTop="@dimen/activity_vertical_margin" 
  tools:context=".LoginActivity" > 
  <LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:orientation="vertical" > 
    <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 
      <TextView 
        android:id="@+id/view_name" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="@string/text_name" /> 
      <EditText 
        android:id="@+id/edit_name" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:ems="10"  
        android:inputType="textPersonName"> 
        <requestFocus /> 
      </EditText> 
    </LinearLayout> 
    <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 
      <TextView 
        android:id="@+id/view_pass" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="@string/text_pass" /> 
      <EditText 
        android:id="@+id/edit_pass" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:ems="10" 
        android:inputType="textPassword" /> 
    </LinearLayout> 
    <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" > 
      <Button 
        android:id="@+id/btn_login" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_weight="0.17" 
        android:text="@string/text_login" /> 
      <CheckBox 
        android:id="@+id/cbx_remember" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginLeft="80dp" 
        android:text="@string/text_rember" /> 
    </LinearLayout> 
  </LinearLayout> 
</RelativeLayout>

String.xml:

<?xmlversion="1.0"encoding="utf-8"?>
<resources>
<stringname="app_name">login</string>
<stringname="action_settings">Settings</string>
<stringname="hello_world">Login</string>
<stringname="text_name">用户名:</string>
<stringname="text_pass">密 码:</string>
<stringname="text_login">登陆</string>
<stringname="text_rember">记住密码</string>
</resources>

希望本文所述对大家Android程序设计有所帮助。

相关文章

  • Android Studio中使用jni进行opencv开发的环境配置方法

    Android Studio中使用jni进行opencv开发的环境配置方法

    今天小编就为大家分享一篇Android Studio中使用jni进行opencv开发的环境配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • Android实现双击返回键退出应用实现方法详解

    Android实现双击返回键退出应用实现方法详解

    这篇文章主要为大家详细介绍了Android实现双击返回键退出应用的实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • kotlin延迟初始化和密封类详细讲解

    kotlin延迟初始化和密封类详细讲解

    Kotlin语言的许多特性,包括变量不可变,变量不可为空,等等。这些特性都是为了尽可能地保证程序安全而设计的,但是有些时候这些特性也会在编码时给我们带来不少的麻烦,下面我们来了解延迟初始化和密封类的特点
    2022-11-11
  • Android底部导航组件BottomNavigationView

    Android底部导航组件BottomNavigationView

    这篇文章主要介绍了Android底部导航组件BottomNavigationView,BottomNavigationView是相当于一个导航的标签,但是它的形式就是像QQ微信之类的界面,至于写出后怎样绑定这三个界面,就得用Fragment,写这三个页面的布局
    2023-03-03
  • Android开发入门之Notification用法分析

    Android开发入门之Notification用法分析

    这篇文章主要介绍了Android中Notification用法,较为详细的分析了Notification的功能、使用步骤与相关注意事项,需要的朋友可以参考下
    2016-07-07
  • Android判断现在所处界面是否为home主桌面的方法

    Android判断现在所处界面是否为home主桌面的方法

    这篇文章主要介绍了Android判断现在所处界面是否为home主桌面的方法,涉及Android界面判断的相关技巧,需要的朋友可以参考下
    2015-05-05
  • Flutter封装组动画混合动画AnimatedGroup示例详解

    Flutter封装组动画混合动画AnimatedGroup示例详解

    这篇文章主要为大家介绍了Flutter封装组动画混合动画AnimatedGroup示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Android实现图片裁剪处理的操作步骤

    Android实现图片裁剪处理的操作步骤

    这篇文章介绍了构建具有图片选择、裁剪(含手动缩放和旋转)及保存到自定义路径功能的 Android 应用 demo 的步骤,包括设置权限、创建布局文件、实现自定义视图CustomCropImageView、更新Activity逻辑等,最终完成了具有完整裁剪功能的应用,需要的朋友可以参考下
    2025-01-01
  • Android MotionEvent中getX()和getRawX()的区别实例详解

    Android MotionEvent中getX()和getRawX()的区别实例详解

    这篇文章主要介绍了Android MotionEvent中getX()和getRawX()的区别实例详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • Flutter异步操作实现流程详解

    Flutter异步操作实现流程详解

    在Flutter中,借助 FutureBuilder 组件和 StreamBuilder 组件,可以非常方便地完成异步操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-09-09

最新评论