Ch2: 探究(Activity)活动
2.2 事件
2.2.1 活动的基本用法
1. 新建一个Empty_Act的工程
2. 手动在Main里面添加一个不带Layout的Act (不要勾选 创建Layout 和Launcher,which is the main Act)
3. 创建一个Layout的文件目录(在Res中),并New一个LayoutResourceFile。这时候就有了布局设计了,可以添加一个Button(用 text 或者 图形化来做)
4. 在活动中,加载布局 。用SetContentView(id)的方法来加载。此处,所有的Res资源文件中的都会在R文件中产生对应的ID。所以,是R.layout.first_layout
5. 在manifest中注册。
实际上,在创建新活动时候已经自动创建过,不过我们要声明一下main Act。 此处用<intent-filter>标签
<intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> //将该活动定义为主活动 </intent-filter>
在activity中添加上述代码。 此后 即可以运行这个工程。
p.s:这里要善于使用AndroidStudio的自动补全代码。
2.2.2 在活动中使用Toast (短小信息提醒的很好的方式)
首先要定义 Toast弹出的触发点。 我们上面有个BUTTON,所以就ClickButton来弹出。
protected void onCreate(Bundle savedInstanceState) { // 任何Act都应该重写OnCreate方法 super.onCreate(savedInstanceState); setContentView(R.layout.first_layout); //用 set... 这个方法, 给当前活动加载一个布局 所有资源都会在R文件中生成相应的资源ID Button button1 = (Button) findViewById(R.id.button_1); // 获取按钮资源 button1.setOnClickListener(new View.OnClickListener(){ // 注册一个监听器 (给按钮注册) @Override public void onClick(View v){ // 点击按钮时,执行监听器中的Onclick()方法,所以Toast写在onClick里面 Toast.makeText(FirstActi.this,"You Clicked Button_1", Toast.LENGTH_LONG).show(); //short for 2sec D long for 3.5 } }); }
这里还有其他2种Toast方法。见 https://blog.csdn.net/a9529lty/article/details/7542828
2.2.3 在活动中使用Menu
1. 在res中先Creat一个menu文件夹
2. 在 menu 中New一个 menu resourse file。 命名main
3. 在main.xml中 写入Menu_Button
<item android:id="@+id/add_item" android:title="Add"/> <item android:id="@+id/remove_item" android:title="Remove"/>
这里写入了2个Button
4. 回到 FirstActi 中重写 onCreateOptionsMenu()方法,确保可以将菜单显示出来。 ( ctrl + O )
public boolean onCreateOptionsMenu(Menu menu) { //重写Menu方法 getMenuInflater().inflate(R.menu.main, menu); //(Menu资源Id,要添加到的Menu对象) return true; // True表示,显示出菜单 }
5. 定义菜单响应事件(光光显示是没用的),重写 onOptionsItemSelected(MenuIten item) 方法
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ // 通过调用 getItemId() 来判断点击的是哪一个 case R.id.add_item: Toast.makeText(this,"You clicked Add",Toast.LENGTH_SHORT).show(); break; case R.id.remove_item: Toast.makeText(this,"You clicked Remove",Toast.LENGTH_SHORT).show(); break; default: // 注意这里大小写敏感的 } return true; }
以上,运行App,即可!
2.2.4 销毁一个活动
本来,按下back键就可以销毁当前的活动。不过如果用代码的话,一个 finish() 即可做到。
public void onClick(View v){ //Toast.makeText(FirstActi.this,"You Clicked Button_1", Toast.LENGTH_LONG).show(); //short for 2sec D long for 3.5 finish(); }
将监视器中的代码改为 finish();
运行App,点击按钮,当前Act销毁,自动退出到桌面。