11月5日Android学习笔记
发布时间:
本文字数:913 字 阅读完需:约 4 分钟
不同活动页面传值
使用intent进行传值
Intent intent = new Intent(this, ResultActivity.class);
//传值
intent.putExtra("jia", jRes);
intent.putExtra("yi", yRes);
startActivity(intent);
//接收跳转过来页面的传值
Intent intent = getIntent();
String jia = intent.getStringExtra("jia");
String yi = intent.getStringExtra("yi");
activity
编写页面逻辑代码的类,有对应的绑定布局
生命周期
package com.xyl.app1105;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
/**
* 编写页面逻辑代码的类,有对应的绑定布局
* 1. 生命周期:
* 2. 跳转页面 startActivity(intent)
* 3. 结束页面 finish()
* 4. 传值
* A--->B B---->A 将B页面返回到A页面,然后怎么传数据
*/
public class MainActivity extends AppCompatActivity {
/**
* 在创建时会被调用
* 初始化控件,初始化数据源
* @param savedInstanceState
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
/**
* 当activity启动时会调用
*/
@Override
protected void onStart() {
super.onStart();
}
/**
* resume:获取焦点
* 获取到焦点时被调用
* 更新数据信息
*/
@Override
protected void onResume() {
super.onResume();
}
/**
* 失去焦点时被调用
*/
@Override
protected void onPause() {
super.onPause();
}
/**
* 当当前页面暂停时会被调用
*/
@Override
protected void onStop() {
super.onStop();
}
/**
* 当activity销毁时调用 finish()
*/
@Override
protected void onDestroy() {
super.onDestroy();
}
/**
* 当页面重新获取焦点时被调用
*/
@Override
protected void onRestart() {
super.onRestart();
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn1:
startActivity(new Intent(this, SecondActivity.class));
}
}
}
生命周期顺序示例
页面传值回之前页面
父页面
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.log_iv:
Intent intent = new Intent(this, SelectIconActivity.class);
startActivityIfNeeded(intent, 1);
break;
case R.id.log_btn:
break;
}
}
/**
* 接收其他页面传回来的数值的方法 A---->B B---->A
* @param requestCode
* @param resultCode
* @param data
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//判断是哪个页面传回来的,根据结果码判断
if (resultCode == 100) {
//第二个参数为默认值
int resId = data.getIntExtra("resId", R.mipmap.baiyang);
iconIv.setImageResource(resId);
}
}
子页面
AdapterView.OnItemClickListener listener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
int resId = mDatas.get(pos);
//将当前被选中的图片的地址,传到上一级
Intent intent = new Intent();
intent.putExtra("resId", resId);
//将当前页面数据传递给上一级页面的方法
setResult(100, intent);
finish();
}
};
保存数据
SharePreferences 共享参数
保存一些键值对到本地(手机内存当中), 如果有需要使用,可以调用
-
创建对象
SharedPreferences preferences
preferences = getSharedPreferences("user_pref", MODE_PRIVATE);
-
在onCreate生命周期显示共享参数信息
showPreferenceInfo();
/** * 显示共享参数的信息 */ private void showPreferenceInfo() { String uname = preferences.getString("uname", ""); String upwd = preferences.getString("upwd", ""); iconId = preferences.getInt("uImg", iconId); if(!TextUtils.isEmpty(uname)){ nameEt.setText(uname); pwdEt.setText(upwd); iconIv.setImageResource(iconId); saveCb.setChecked(true); } }
-
使用
SharedPreferences.Editor editor = preferences.edit();
进行存储editor.putString("uname", uname); editor.putString("upwd", upwd); editor.putInt("uImg", iconId); editor.commit();
-
使用
clear()
清空editor.clear(); editor.commit();
示例代码
LoginActivity.java
package com.xyl.app1105;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
public class LoginActivity extends AppCompatActivity implements View.OnClickListener {
EditText nameEt, pwdEt;
ImageView iconIv;
CheckBox saveCb;
Button logBtn;
SharedPreferences preferences;
int iconId = R.mipmap.baiyang; //头像显示的资源
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
initView();
setEvent();
//创建共享参数对象
preferences = getSharedPreferences("user_pref", MODE_PRIVATE);
//显示共享参数的信息
showPreferenceInfo();
}
/**
* 显示共享参数的信息
*/
private void showPreferenceInfo() {
String uname = preferences.getString("uname", "");
String upwd = preferences.getString("upwd", "");
iconId = preferences.getInt("uImg", iconId);
if(!TextUtils.isEmpty(uname)){
nameEt.setText(uname);
pwdEt.setText(upwd);
iconIv.setImageResource(iconId);
saveCb.setChecked(true);
}
}
private void setEvent() {
iconIv.setOnClickListener(this);
logBtn.setOnClickListener(this);
}
private void initView() {
nameEt = findViewById(R.id.log_et_name);
pwdEt = findViewById(R.id.log_et_pwd);
iconIv = findViewById(R.id.log_iv);
saveCb = findViewById(R.id.log_cb);
logBtn = findViewById(R.id.log_btn);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.log_iv:
Intent intent = new Intent(this, SelectIconActivity.class);
// startActivityForResult(intent, 1);
startActivityIfNeeded(intent, 1);
break;
case R.id.log_btn:
//获取内容
String uname = nameEt.getText().toString().trim();
String upwd = pwdEt.getText().toString().trim();
//判断用户名和密码是否正确
boolean isSuccess = judgeInfo(uname, upwd);
if (isSuccess) {
//登录成功,判断是否保存用户信息
SharedPreferences.Editor editor = preferences.edit();
if (saveCb.isChecked()) {
//保存数据到共享参数当中
editor.putString("uname", uname);
editor.putString("upwd", upwd);
editor.putInt("uImg", iconId);
editor.commit();
return;
}
//如果选择不保存,原来的数据清空
else{
editor.clear();
editor.commit();
return;
}
}
break;
}
}
private boolean judgeInfo(String uname, String upwd) {
/**
* 省略联网判断登录的过程
*/
if (TextUtils.isEmpty(uname) || TextUtils.isEmpty(upwd)) {
Toast.makeText(this, "登录失败", Toast.LENGTH_SHORT).show();
return false;
}
Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
return true;
}
/**
* 接收其他页面传回来的数值的方法 A---->B B---->A
*
* @param requestCode
* @param resultCode
* @param data
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//判断是哪个页面传回来的,根据结果码判断
if (resultCode == 100) {
//第二个参数为默认值
int resId = data.getIntExtra("resId", R.mipmap.baiyang);
iconIv.setImageResource(resId);
iconId = resId;
}
}
}
Powerd by YlBlog(玉龙博客)