当前位置:   article > 正文

Android应用开发 - 学生信息管理系统_studentadminister.activity

studentadminister.activity

Android应用开发 - 学生信息管理系统


总结一些主要问题

一、活动:Activity

1-1、活动是什么

活动( Activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用户进行交互。 一个应用程序中可以包含零个或多个活动,但不包含任何活动的应用程序很少见,谁也不想让自己的应用永远无法被用户看到吧?

1-2、活动的基本用法

你需要知道,项目中的任何活动都应该重写 Activity的 onCreate()方法,而目前我们的
FirstActivity中已经重写了这个方法,这是由 Android Studio自动帮我们完成的,代码如下所示:

public class FirstActivity extends AppCompatActivity {
	@Overrid
	protected void onCreate( Bundle savedInstanceState) {
		super onCreate(savedInstancestate);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

可以看到, onCreate()方法非常简单,就是调用了父类的 onCreate()方法。当然这只是默
认的实现,后面我们还需要在里面加入很多自己的逻辑。

我的理解:

每 个 活 动 可 以 理 解 为 一 系 列 操 作 的 一 个 基 本 动 作 , 我 们 有 一 个 起 始 动 作 M a i n A c t i v i t y , 每个活动可以理解为一系列操作的一个基本动作,我们有一个起始动作MainActivity, MainActivity

接 着 我 门 可 以 创 建 和 选 择 任 意 一 个 自 己 想 要 的 动 作 ( a c t i v i t y ) 在 起 始 动 作 之 后 , 接着我门可以创建和选择任意一个自己想要的动作(activity)在起始动作之后, (activity)

这 需 要 我 们 在 M a i n A c t i v i t y 中 去 调 用 它 , 这 里 我 们 可 以 使 用 I n t e n t 来 实 现 。 这需要我们在MainActivity中去调用它,这里我们可以使用Intent来实现。 MainActivity使Intent

二、Intent:意图,主要是解决Android应用的各项组件之间的通讯

2-1、使用 Intent在活动之间穿梭

Intent是 Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。

Intent一般可被用于启动活动、启动服务以及发送广播等场景,由于服务、广播等概念你暂时还未涉及,那么本章我们的目光无疑就锁定在了启动活动上面。

Intent大致可以分为两种:显式 Intent和隐式 Intent
Intent有多个构造函数的重载,其中一个是 Intent( Context package Context, Class<?>cls)。这个构造函数接收两个参数,
第一个参数 Context要求提供一个启动活动的上下文,
第二个参数 Class则是指定想要启动的目标活动,通过这个构造函数就可以构建出 Intent的“意图”。

然后我们应该怎么使用这个 Intent呢?

Activity类中提供了一个 startActivity()方法,这个方法是专门用于启动活动的,它接收一个 Intent参数,这里我们将构建好的 Intent传入startActivity()方法就可以启动目标活动了。
代码如下所示:

buttonl. setonclickListener(new View. OnclickListener() {
	@Override
	public void onclick(View v) {
		Intent intent new Intent (FirstActivity. this, SecondActivity. class);
		startActivity(intent);
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

我们首先构建出了一个 Intent,传入 FirstActivity. this作为上下文,传入 SecondActivity. class作为目标活动,这样我们的“意图”就非常明显了,即在 FirstActivity这个活动的基础上打开 SecondActivity这个活动。然后通过 startActivity()方法来执行这个 Intent

三、程序界面(用到的一些控件)

3-1、 TextView

Text View可以说是 Android中最简单的一个控件了,它主要用于在界面上显示一段文本信息,
修改 activity mainxml中的代码,如下所示:

<Linearlayout xmlns:android="http://schemas.androidcom/apk/res/android"
	android: orientation="vertical"
	android: layout width="match parent"
	android: layout height="match parent">
<TextView
	android: id="@+id/text view"
	android: layout width="match parent"
	android: layout height="wrap content"
	android: text="this is textview"/>
</LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

外面的 LinearLayout先忽略不看,在 TextView中我们使用 android:id给当前控件定义了个唯一标识符,

然后使用 android: layout width和android: ayout height指定了控件的宽度和高度。 Android中所有的控件都具有这两个属性,

可选值有3种: match parent、 fill parent和 wrap content。
其中 match parent和filL_ parent的意义相同,现在官方更加推荐使用 match parent。
match parent表示让当前控件的大小和父布局的大小一样,也就是由父布局来决定当前控件的大小。
wrap content表示让当前控件的大小能够刚好包含住里面的内容,也就是由控件内容决定当前控件的大小。

所以上面的代码就表示让 Text View的宽度和父布局一样宽,也就是手机屏幕的宽度,让 TextView的高度足够包含住里面的内容就行。
当然除了使用上述值,你也可以对控件的宽和高指定一个固定的大小,但是这样做有时会在不同手机屏幕的适配方面出现问题。接下来我们通过 android:text指定 Text View中显示的文本内容.
在这里插入图片描述

3-2、Button

Button是程序用于和用户进行交互的一个重要控件,相信你对这个控件已经非常熟悉了,因为我们在上一章用了太多次 Button。
它可配置的属性和 TextView是差不多的,我们可以在activity main xml中这样加入 Button:

<Button
android: id="@+id/button"
android: layout width="match parent"
android: layout height="wrap content"
android: text="Button"/>
</LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

接下来我们可以在 MainActivity中为 Button的点击事件注册一个监听器,如下所示:

public class MainActivity extends AppCompatActivity{
	@Override
	protected void onCreate(Bundle savedInstancestate){
		super on Create(savedInstancestate);
		etContentView(R.layout.activity.main);
		Buttonbutton = (Button)findviewById(R.id.button);
		button.setoncClickListener(new View. OnClickListener(){
			@override
			public void onClick(View v){
			//在此处添加逻辑
			}
		});
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

这样每当点击按钮时,就会执行监听器中的 onclick()方法,我们只需要在这个方法中加入待处理的逻辑就行了。

3-3、 EditText

Editτext是程序用于和用户进行交互的另一个重要控件,它允许用户在控件里输入和编辑内容,并可以在程序中对这些内容进行处理。
EditText的应用场景非常普遍,在进行发短信、发微博、聊QQ等操作时,你不得不使用EditText。
修改 activity.main.xml中的代码,如下所示

<liNearlayout xmins:android="http://schemas.androidcom/apk/res/android"
	android: orientation="vertical"
	android: layout width="match parent"
	android: layout height="match parent">
	
	<EditText
	android: id="@+id/edit text"
	android: layout width="match_ parent"
	android: layout height="wrap_ content"/>
</LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

其实看到这里,我估计你已经总结出 Android控件的使用规律了,用法基本上都很相似:
给控件定义一个id,再指定控件的宽度和高度,然后再适当加入一些控件特有的属性就差不多了。

3-4、AlertDialog

AlertDialog可以在当前的界面弹出一个对话框,这个对话框是置顶于所有界面元素之上的,能够屏蔽掉其他控件的交互能力,因此 Alert Dialog一般都是用于提示一些非常重要的内容或者警告信息。比如为了防止用户误删重要内容,在删除前弹出一个确认对话框。
修改 Main Activity中的代码,如下所示

public class MainActivity extends App CompatActivity implements view.OnClickListener{
	@Override
	public void onclick(View v){
		switch (v.getIdo){
			case r.id.button
				AlertDialog Builder dialog new AlertDialog Builder(MainActivity.this);
				dialog setTitle("This is Dialog");
				dialog. setMessage("Something important. " )
				dialog. set cancelable(false
				dialog. setPositiveButton("OK", new DialogInterface.OnClickListener(){
					@Override
					public void onclick(DialogInterface dialog, int which){
					}
				});
				
				dialog. setNegativeButton("Cancel", new DialogInterface.OnclickListener(
					@Override
					public void onCLick(DialogInterface dialog int which){
					}
				});
				dialog.show ()
				break:
			default
		}
	}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

首先通过 AlertDialog Builder创建一个 Alert Dialog的实例然后可以为这个对话框设置标题、内容、可否取消等属性,接下来调用 setPositiveButton()方法为对话框设置确定按钮的点击事件,调用setNegativeButton()方法设置取消按钮的点击事件,最后调用show()方法将对话框显示出来。

四、数据存储方案

4-1、Shared Preferences存储

不同于文件的存储方式, SharedPreferences是使用键值对的方式来存储数据的。也就是说当保存一条数据的时候,需要给这条数据提供一个对应的键,这样在读取数据的时候就可以通过这个键把相应的值取出来。

而且 Shared Preferences还支持多种不同的数据类型存储,如果存储的数据类型是整型,那么读取出来的数据也是整型的;如果存储的数据是一个字符串,那么读取出来的数据仍然是字符串。

①、将数据存储到 Shared Preferences中

要想使用 SharedPreferences来存储数据,首先需要获取到 SharedPreferences对象。 Android中主要提供了3种方法用于得到 SharedPreferences对象

  1. Context类中的 getsharedPreferences()方法
    此方法接收两个参数,第一个参数用于指定 Shared Preferences文件的名称,如果指定的文件不存在则会创建一个, SharedPreferences文件都是存放在/ data/data// shared prefs目录下的。
    第二个参数用于指定操作模式,目前只有 MODE PRIVATE这一种模式可选,它是默认的操作模式,和直接传入0效果是相同的,表示只有当前的应用程序才可以对这个SharedPreferences文件进行读写。
  2. Activity类中的 getPreferences()方法
    这个方法和 Context中的 getsharedPreferences()方法很相似,不过它只接收一个操作模式参数,因为使用这个方法时会自动将当前活动的类名作为 SharedPreferences的文件名。

②、从 SharedPreferences中读取数据

从 Shared Preferences文件中读取数据会更加地简单。
SharedPreferences对象中提供了一系列的get方法,用于对存储的数据进行读取,每种get方法都对应了 SharedPreferences. Editor中的一种put方法,比如读取一个布尔型数据就使用 getBoolean()方法,
读取一个字符串就使用 getstring()方法。这些get方法都接收两个参数,第一个参数是键,传人存储数据时使用的键就可以得到相应的值了;第二个参数是默认值,即表示当传入的键找不到对应的值时会以什么样的默认值进行返回。

4-2、SQLite数据库

SQLite是一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百KB的内存就足够了,因而特别适合在移动设备上使用。 而 SQLite又比一般的数据库要简单得多,它甚至不用设置用户名和密码就可以使用。 Android正是把这个功能极为强大的数据库嵌入到了系统当中,使得本地持久化的功能有了一次质的飞跃。

前面我们所学的文件存储和 SharedPreferences存储毕竟只适用于保存一些简单的数据和键值对,当需要存储大量复杂的关系型数据的时候,你就会发现以上两种存储方式很难应付得了。比如我们手机的短信程序中可能会有很多个会话,每个会话中又包含了很多条信息内容,并且大部分会话还可能各自对应了电话簿中的某个联系人。很难想象如何用文件或者 SharedPreferences来存储这些数据量大、结构性复杂的数据吧?但是使用数据库就可以做得到。那么我们就赶快来看看, Android中的 SQLite数据库到底是如何使用的。

  1. 创建数据库
    Android为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpen Helper帮助类,借助这个类就可以非常简单地对数据库进行创建和升级。
    对 SQLiteOpenHelper的基本用法进行介绍
    首先你要知道 SQLiteOpen Helper是一个抽象类,这意味着如果我们想要使用它的话,就需要创建一个自己的帮助类去继承它。 SQLiteOpen Helper中有两个抽象方法,分别是 onCreate()和 onUpgrade(),我们必须在自己的帮助类里面重写这两个方法,然后分别在这两个方法中去实现创建、升级数据库的逻辑。
    SQLiteOpenHelper中还有两个非常重要的实例方法: getReadableDatabase()和getWritableDatabase()。这两个方法都可以创建或打开一个现有的数据库(如果数据库已存在则直接打开,否则创建一个新的数据库),并返回一个可对数据库进行读写操作的对象。不同的是,当数据库不可写入的时候(如磁盘空间已满), getReadableDatabase()方法返回的对象将以只读的方式去打开数据库,而 getwritableDatabase()方法则将出现异常。

书P212。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/122407
推荐阅读
相关标签
  

闽ICP备14008679号