java-activity启动关闭,交换数据,返回结果,存储

activity的启动与关闭

Mainactivity
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //mainactivty的布局方式采用的是activity_main.xml Button btn1 = (Button)findViewById(R.id.btn1); btn1.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this,Zqhactivity.class); startActivity(intent); //改成finish()也可以返回调用它的activity中 //如果是mainactivity一旦finish就直接退出了 } }); } }
zqhactivity
package com.example.myapplication; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; //自己写的activity继承自android.app.Activity public class Zqhactivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_zqh); //给现在的这个activity设置好布局文件 Button backbtn = (Button) findViewById(R.id.backbtn); backbtn.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(Zqhactivity.this,MainActivity.class); startActivity(intent); } }); } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/btn1" android:text="切换" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </RelativeLayout>
activity_zqh.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <View android:id="@+id/view1" android:layout_width="100dp" android:layout_height="100dp" android:background="#FF000000"> </View> <Button android:layout_width="200dp" android:layout_height="70dp" android:id="@+id/backbtn" android:text="返回" /> <View android:id="@+id/view2" android:background="#FFFACD" android:layout_alignParentBottom="true" android:layout_width="100dp" android:layout_height="100dp"> </View> <View android:id="@+id/view3" android:background="#E6E6FA" android:layout_alignParentRight="true" android:layout_width="100dp" android:layout_height="100dp"> </View> <View android:id="@+id/view4" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" android:background="#2F4F4F" android:layout_width="100dp" android:layout_height="100dp"> </View> <View android:id="@+id/rightbox" android:layout_width="200dp" android:layout_height="200dp" android:layout_toRightOf="@id/view1" android:background="#FFFF00" > </View> <View android:id="@+id/bottombox" android:layout_width="300dp" android:layout_height="100dp" android:background="#8B8B7A" android:layout_below="@id/rightbox"> </View> </LinearLayout>
AndroidManifest
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.myapplication"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <!--以下是将自己写的activity注册到配置文件中--> <activity android:name=".Zqhactivity" android:label="新activity"></activity> <activity android:name=".MainActivity"> <!--以下的四行代码可以将该activity配置为程序的入口activity(主体activity)--> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
Activity间交换数据

Mainactivity
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //mainactivty的布局方式采用的是activity_main.xml Button btn1 = (Button)findViewById(R.id.submit); btn1.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { EditText mail_text = (EditText) findViewById(R.id.mail_text); EditText username = (EditText) findViewById(R.id.username); Intent intent = new Intent(MainActivity.this,Zqhactivity.class); Bundle bundle = new Bundle(); //bundle 可以存储key和value的键值对,然后放到 //intent里面,然后随着intent传到其他的activity中 bundle.putCharSequence("mail",mail_text.getText().toString()); bundle.putCharSequence("username",username.getText().toString()); intent.putExtras(bundle); startActivity(intent); } }); } }
Zqhactivity
package com.example.myapplication; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; //自己写的activity继承自android.app.Activity public class Zqhactivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_zqh); //给现在的这个activity设置好布局文件 Intent intent = getIntent(); Bundle bundle = intent.getExtras(); String mail = bundle.getString("mail"); String username = bundle.getString("username"); TextView textView = findViewById(R.id.textview); textView.setText("mail:"+ mail + "username:" + username); Button backbtn = (Button) findViewById(R.id.backbtn); backbtn.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(Zqhactivity.this,MainActivity.class); startActivity(intent); } }); } }
activity_main
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <EditText android:id="@+id/mail_text" android:layout_width="200dp" android:layout_height="70dp" android:hint="mail" /> <EditText android:id="@+id/username" android:layout_width="200dp" android:layout_height="70dp" android:hint="账户名" /> <Button android:id="@+id/submit" android:layout_width="200dp" android:layout_height="70dp" android:text="提交" /> </LinearLayout>
activity_zqh
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textview" android:layout_width="200dp" android:layout_height="70dp"/> <Button android:layout_width="200dp" android:layout_height="70dp" android:id="@+id/backbtn" android:text="返回" /> </LinearLayout>
调用另一个activity并返回结果
实现点换头像,然后弹出头像选择,选择完头像之后自动返回主界面并且更新头像的显示

activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:layout_width="300dp" android:layout_height="300dp" android:id="@+id/imgshow" android:layout_gravity="center" android:src="@drawable/img0" /> <Button android:id="@+id/choose" android:layout_width="200dp" android:layout_height="70dp" android:layout_gravity="center" android:text="选择头像" /> </LinearLayout>
ceil.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/img" android:layout_width="100dp" android:layout_height="75dp"/> </LinearLayout>
activity_zqh.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <GridView android:id="@+id/gridview" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="3"></GridView> </LinearLayout>
Mainactivity
package com.example.myapplication; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //mainactivty的布局方式采用的是activity_main.xml Button btn1 = (Button)findViewById(R.id.choose); btn1.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this,Zqhactivity.class); Bundle bundle = new Bundle(); //bundle 可以存储key和value的键值对,然后放到 startActivityForResult(intent,0x11); } }); } //选择好头像返回东西过来的时候,需要对返回过来的值进行处理,需要重写onactivityresult @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 0x11 && resultCode == 0x11){ //请求码和结果码相同的时候对intent // 内的返回数据进行解包 Bundle bundle = data.getExtras(); int imgid = bundle.getInt("imgid"); ImageView imageView = (ImageView)findViewById(R.id.imgshow); imageView.setImageResource(imgid); } } }
Zqhactivity
package com.example.myapplication; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import android.widget.GridView; import android.widget.SimpleAdapter; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; //自己写的activity继承自android.app.Activity public class Zqhactivity extends Activity { int[] paint_path = new int[]{ R.drawable.img0,R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4 }; //paint_path里面装的是图片的id号 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_zqh); //给现在的这个activity设置好布局文件 GridView gridView = (GridView) this.findViewById(R.id.gridview); List<Map<String,Object>> listitem = new ArrayList<Map<String,Object>>(); for (int i = 0;i<paint_path.length;i++){ Map<String,Object> map = new HashMap<String,Object>(); map.put("image",paint_path[i]); //map相当于字典,key是image,value是图片的id号 listitem.add(map); } System.out.println("sssss"+listitem.size()); //simpleadapter的5项(第一项是上下文this,第二项是List<Map<String,Object>>列表, // 第三项是子网格的布局文件,第四项是一个字符串数组,用来存放List<Map<String,Object>>里面 //的那些key,在这里面就是"image",第五项是一个整形数组,里面放的是子网格的imageview的id号 SimpleAdapter simpleAdapter = new SimpleAdapter(this,listitem, R.layout.ceil,new String[]{"image"},new int[]{R.id.img}); gridView.setAdapter(simpleAdapter); //上面是把图片装进网格,接下来是监听网格内的哪一个图像被点击了。 gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent intent = getIntent(); // 获取从mainactivity传过来的intent Bundle bundle = new Bundle(); bundle.putInt("imgid",paint_path[position]); //按下的是paint_path的position位 intent.putExtras(bundle); setResult(0x11,intent); finish(); // 返回调用此activity的activity } }); } }
存储



轻量级存储sharedpreference(键值对存储)

Mainactivity
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.SpinnerAdapter; import android.widget.TextView; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class MainActivity extends AppCompatActivity { private TextView sc; private EditText username; private EditText password; private Button save_btn; private Button show_btn; private SharedPreferences sharedPreferences; private SharedPreferences.Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //mainactivty的布局方式采用的是activity_main.xml username = findViewById(R.id.username); password = findViewById(R.id.password); save_btn = findViewById(R.id.save_btn); show_btn =findViewById(R.id.show_btn); sc = findViewById(R.id.sc); //生成sharedPreferences轻量数据存储的时候,第一个位置是生成的文件的名字 //第二个是模式的名称,MODE_PRIVATE是除了本应用有访问权限,其他应用都没有访问权限 //用MODE_APPEND可以追加不覆盖填写 sharedPreferences = this.getSharedPreferences("data.txt",MODE_PRIVATE); editor = sharedPreferences.edit(); } public void save_btn(View view){ try{ //sharedPreferences的edit存数据的时候是按照键值对的形式来存储的, editor.putString("username",username.getText().toString()); editor.putString("password",password.getText().toString()); editor.apply(); }catch (Exception erro){ System.out.println(erro); } } public void show_btn(View view){ try{ //sharedPreferences.getString("username","")的前面是存储数据时的key值,后面那个是 //如果存储的数据里面没有这个key和value的时候显示的默认值 sc.setText(sharedPreferences.getString("username","") + " " + sharedPreferences.getString("password","") ); }catch (Exception erro){ System.out.println(erro); } } }
activity_main
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/sc" android:layout_width="300dp" android:layout_height="70dp"/> <EditText android:id="@+id/username" android:layout_width="300dp" android:layout_height="70dp" android:hint="username"/> <EditText android:id="@+id/password" android:layout_width="300dp" android:layout_height="70dp" android:hint="password"/> <Button android:id="@+id/save_btn" android:onClick="save_btn" android:layout_width="300dp" android:layout_height="70dp" android:hint="保存"/> <Button android:id="@+id/show_btn" android:onClick="show_btn" android:layout_width="300dp" android:layout_height="70dp" android:hint="显示"/> </LinearLayout>
内部存储

MainActivity
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.SpinnerAdapter; import android.widget.TextView; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class MainActivity extends AppCompatActivity { private TextView sc; private EditText username; private EditText password; private Button save_btn; private Button show_btn; private SharedPreferences sharedPreferences; private SharedPreferences.Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //mainactivty的布局方式采用的是activity_main.xml username = findViewById(R.id.username); password = findViewById(R.id.password); save_btn = findViewById(R.id.save_btn); show_btn =findViewById(R.id.show_btn); sc = findViewById(R.id.sc); } public void save_btn(View view){ try{ save_file(username.getText().toString() + " " + password.getText().toString()); }catch (Exception erro){ System.out.println(erro); } } public void show_btn(View view){ try{ String content = read_file(); sc.setText(content); }catch (Exception erro){ System.out.println(erro); } } private void save_file(String content) { FileOutputStream fileOutputStream = null; //先定义fileOutputStream是空值 try { fileOutputStream = openFileOutput("data.txt", MODE_PRIVATE); fileOutputStream.write(content.getBytes()); //将字符串写入文件夹 } catch (Exception erro) { System.out.println(erro); } finally { //这样写可以保证最后fileOutputStream必然被关闭 try { if (fileOutputStream != null) { fileOutputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } private String read_file() { FileInputStream fileInputStream = null; //先定义fileInputStream是空值 try { fileInputStream = openFileInput("data.txt"); //打开指定的文件夹进行读取 byte[] buff = new byte[1024]; //每次读取1024个字节金buff StringBuilder sb = new StringBuilder(""); //StringBuilder的append可以对字符串进行拼接 int len = 0; while ((len = fileInputStream.read(buff))>0){ //当读取出来的长度仍然大于0便一直读,并 // 且进行字符串的拼接 sb.append(new String(buff,0,len)); } return sb.toString(); } catch (Exception erro) { System.out.println(erro); } finally { //确保最后fileInputstream必然被关闭 if (fileInputStream != null){ try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/sc" android:layout_width="300dp" android:layout_height="70dp"/> <EditText android:id="@+id/username" android:layout_width="300dp" android:layout_height="70dp" android:hint="username"/> <EditText android:id="@+id/password" android:layout_width="300dp" android:layout_height="70dp" android:hint="password"/> <Button android:id="@+id/save_btn" android:onClick="save_btn" android:layout_width="300dp" android:layout_height="70dp" android:hint="保存"/> <Button android:id="@+id/show_btn" android:onClick="show_btn" android:layout_width="300dp" android:layout_height="70dp" android:hint="显示"/> </LinearLayout>
外部存储
坑多,在安卓6以下的版本,直接minifest加入两条permission语句就行了,在安卓6以上的版本需要动态申请权限,而在安卓10以上的版本,还需要加上android:requestLegacyExternalStorage="true"


AndroidManifest中需要加入的项
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> android:requestLegacyExternalStorage="true"
Mainactivity
package com.example.myapplication; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Environment; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class MainActivity extends AppCompatActivity { private Permission pm; private TextView sc; private EditText username; private EditText password; private Button save_btn; private Button show_btn; private SharedPreferences sharedPreferences; private SharedPreferences.Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //mainactivty的布局方式采用的是activity_main.xml username = findViewById(R.id.username); password = findViewById(R.id.password); save_btn = findViewById(R.id.save_btn); show_btn =findViewById(R.id.show_btn); sc = findViewById(R.id.sc); pm = new Permission(); pm.cheackpermission(this); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == 1000){ for (int i = 0;i<grantResults.length;i++){ if (grantResults[i] != PackageManager.PERMISSION_GRANTED){ Log.e("permission",permissions[i] + "被拒绝"); } } } } public void save_btn(View view){ try{ save_file(username.getText().toString() + " " + password.getText().toString()); }catch (Exception erro){ System.out.println(erro); } } public void show_btn(View view){ try{ String content = read_file(); sc.setText(content); }catch (Exception erro){ System.out.println(erro); } } private void save_file(String content) { FileOutputStream fileOutputStream = null; //先定义fileOutputStream是空值 try { boolean sdCardExist = Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED);// 判断sd卡是否存在 System.out.println("外部存储是否可用" + sdCardExist); System.out.println("外部存储的基本路径" + Environment.getExternalStorageDirectory() .getAbsolutePath()); File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "Zqhfile"); if (!dir.exists()) { boolean mkdirs = dir.mkdirs(); if (!mkdirs) { Log.e("TAG", "文件夹创建失败"); } else { Log.e("TAG", "文件夹创建成功"); } } File file = new File(dir + File.separator + "data.txt"); //保存的文件是zqhfile目录下面的data.txt if (!file.exists()){ System.out.println("没有此文件"); file.createNewFile(); //如果不存在data.txt就创建zqhfile } fileOutputStream = new FileOutputStream(file); fileOutputStream.write(content.getBytes()); //将字符串写入文件夹 } catch (Exception erro) { System.out.println(erro); } finally { //这样写可以保证最后fileOutputStream必然被关闭 try { if (fileOutputStream != null) { fileOutputStream.close(); } } catch (IOException e) { e.printStackTrace(); } } } private String read_file() { FileInputStream fileInputStream = null; //先定义fileInputStream是空值 try { File file = new File(Environment.getExternalStorageDirectory() + File.separator + "zqhfile" + File.separator + "data.txt"); fileInputStream = new FileInputStream(file); //打开指定的文件夹进行读取 byte[] buff = new byte[1024]; //每次读取1024个字节金buff StringBuilder sb = new StringBuilder(""); //StringBuilder的append可以对字符串进行拼接 int len = 0; while ((len = fileInputStream.read(buff))>0){ //当读取出来的长度仍然大于0便一直读,并 // 且进行字符串的拼接 sb.append(new String(buff,0,len)); } return sb.toString(); } catch (Exception erro) { System.out.println(erro); } finally { //确保最后fileInputstream必然被关闭 if (fileInputStream != null){ try { fileInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } }
Permission
package com.example.myapplication; import android.Manifest; import android.app.Activity; import android.content.pm.PackageManager; import android.os.Build; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import java.util.ArrayList; import java.util.List; public class Permission { //高版本的安卓系统不仅需要在manifest中写权限 // 程序中也需要动态申请权限,这是要申请的权限 private String[] permission = { Manifest.permission.WRITE_EXTERNAL_STORAGE, //外部存储写权限 Manifest.permission.READ_EXTERNAL_STORAGE, //外部存储读权限 }; private List<String> need_permission = new ArrayList(); private int REQUEST_CODE = 1000; public void cheackpermission(Activity activity){ //在当前安卓系统版本大于6的时候才需要进行动态权限的申请 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){ for (int i = 0;i<permission.length;i++){ //逐条查询permission里面的权限看看是否都有,如果没有的话 if (ContextCompat.checkSelfPermission(activity,permission[i]) != PackageManager.PERMISSION_GRANTED){ need_permission.add(permission[i]); } } //如果need_permission的大小大于0,说明需要有需要进行权限申请的,进行权限的申请 if (need_permission.size() > 0){ requestPermission(activity); } } } public void requestPermission(Activity activity){ ActivityCompat.requestPermissions(activity, //将需要进行动态权限获取的need_permission列表变为字符串数组 need_permission.toArray(new String[need_permission.size()]),REQUEST_CODE); } }
activity_main
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/sc" android:layout_width="300dp" android:layout_height="70dp"/> <EditText android:id="@+id/username" android:layout_width="300dp" android:layout_height="70dp" android:hint="username"/> <EditText android:id="@+id/password" android:layout_width="300dp" android:layout_height="70dp" android:hint="password"/> <Button android:id="@+id/save_btn" android:onClick="save_btn" android:layout_width="300dp" android:layout_height="70dp" android:hint="保存"/> <Button android:id="@+id/show_btn" android:onClick="show_btn" android:layout_width="300dp" android:layout_height="70dp" android:hint="显示"/> </LinearLayout>

浙公网安备 33010602011771号