1.活动的基本用法
(1)手动创建活动
step1:
![](https://img.haomeiwen.com/i10971896/56d4339264367c4e.png)
step2:
![](https://img.haomeiwen.com/i10971896/4515605286c15c99.png)
(2)创建和加载布局
界面和逻辑分离
step1:
![](https://img.haomeiwen.com/i10971896/5b24c4fcf16d4d5d.png)
step2:
![](https://img.haomeiwen.com/i10971896/3b59ce64f0f152a7.png)
step3:
![](https://img.haomeiwen.com/i10971896/6149c9bf4ea1f2eb.png)
(3)在AndroidMainfest文件中注册
![](https://img.haomeiwen.com/i10971896/9131c9444157d13b.png)
(4)在活动中使用Toast
逻辑代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_four);
// 在点击按钮的时候,弹出Toast
// step1: 找到按钮元素(组件)
Button button4 = (Button) findViewById(R.id.button4);
// step2: 按钮添加点击事件的监听
// 参数: View 对象的事件监听
button4.setOnClickListener(new View.OnClickListener(){
// 重新定义了点击事件
@Override
public void onClick(View v){
// 使用系统提供的Toast进行设置文字
// 使用makeText() 创建出来一个Toast 对象
// Toast.LENGTH_SHORT 显示时长
Toast.makeText(FourActivity.this,"You click four_activity_button",Toast.LENGTH_SHORT).show();
}
});
}
页面代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_four"
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="com.example.oliva.app3.FourActivity">
<!--定义一个button 和 id:button2-->
<Button
android:text="Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_marginStart="114dp"
android:layout_marginTop="186dp"
android:id="@+id/button4" />
</RelativeLayout>
结果:
![](https://img.haomeiwen.com/i10971896/48c51495bc0386e9.png)
(5)在活动中使用Menu
step1:
![](https://img.haomeiwen.com/i10971896/bf3cbec1f8c0391e.png)
step2:
逻辑代码:
![](https://img.haomeiwen.com/i10971896/dd3de9bce05a67c1.png)
代码:
// 菜单选择
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.add_item:
Toast.makeText(this,"You click add",Toast.LENGTH_SHORT).show();
break;
case R.id.remove_item:
Toast.makeText(this,"You click remove",Toast.LENGTH_SHORT).show();
break;
default:
}
return true;
}
运行效果:
![](https://img.haomeiwen.com/i10971896/91e6d0140fa095d0.png)
![](https://img.haomeiwen.com/i10971896/48ceaf163493a213.png)
(6)销毁一个活动
//开启活动
// startActivity(intent);
// Toast.makeText(MainActivity.this, "You click button", Toast.LENGTH_SHORT).show();
// 销毁活动
// 相当于返回--back
finish();
2.使用Intent 在活动之间穿梭
(1)使用显式Intent
step1:
从主页面点击按钮进入第二个页面
代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button) findViewById(R.id.button_1);
//元素监听事件
button1.setOnClickListener(new View.OnClickListener(){
//当点击之后,执行的函数
@Override
public void onClick(View v) {
// 显示intent
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
// 给定回调结果请求码是1 --》 回调函数 onActivityResult
startActivityForResult(intent,1);
}
});
step2:
运行效果
点击主页面按钮,跳转成功后的界面
![](https://img.haomeiwen.com/i10971896/04794a3f382afa81.png)
(2)使用隐式Intent
step1:
在mainfest.xml 文件的活动中,添加action标签
![](https://img.haomeiwen.com/i10971896/8a1abd82daab49cf.png)
step2:
引用:
// 隐示intent
Intent intent = new Intent("com.example.SecondActivity.ACTION_START");
intent.addCategory("com.example.SecondActivity.MY_CATEGORY");
//开启活动
startActivity(intent);
(3)更多隐式Intent的用法
可以进行传递数据,执行时,会自动跳转到浏览器,输入www.baidu.com
// 更多的隐式调用,可以传递数据
// ========2========
Intent intent = new Intent(Intent.ACTION_VIEW);
//Uri 对象,是一个网址对象
intent.setData(Uri.parse("http://baidu.com"));
startActivity(intent);
// ========3========
Intent intent = new Intent(Intent.ACTION_DIAL);
//
intent.setData(Uri.parse("tel:18010273600"));
startActivity(intent);
结果:
![](https://img.haomeiwen.com/i10971896/483271c76111ff3a.png)
(4)向下一个活动传递数据
step1:
设置数据:
//进行数据的传递
// ========4========
String data = "Hello SecondActivity";
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("extra_data",data);
startActivity(intent);
step2:
接受数据:
// 将传递过来的数据取出来
// ========1========
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
Log.d("SecondActivity",data);
运行效果:
![](https://img.haomeiwen.com/i10971896/4c9d48f0d1174ee2.png)
(5)返回数据向向一个活动
step1:
准备数据:
public class SecondActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second2);
// ========2========
// 向上传递数据
// 第二个页面(本页面)button 按钮元素的获取
Button button2 = (Button) findViewById(R.id.button);
// 监听事件
button2.setOnClickListener(new View.OnClickListener(){
////点击事件,当按钮点击的时候,向上一个页面返回数据
@Override
public void onClick(View v){
// 目标
Intent intent = new Intent();
//存储结果
intent.putExtra("data_return","Hello MainActivity 2");
//放置到结果中,专门向上一个活动返回数据
// 参数1: 处理结果,
// 参数2: intent对象
setResult(RESULT_OK,intent);
// 返回上一个页面,将这个页面,进行销毁
finish();
}
});
}
}
step2:
接受结果:
// ========5========
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
// 给定回调结果请求码是1 --》 回调函数 onActivityResult
startActivityForResult(intent,1);
}
});
//3个参数
// 1): 启动活动时传入的请求码--》判断数据的来源
// 2):返回数据时,处理结果码
// 3):参数data,具体的数据由intent对象携带
@Override
protected void onActivityResult (int requestCode,int resultcode,Intent data){
switch (requestCode){
case 1:
if(resultcode == RESULT_OK){
String returnedData = data.getStringExtra("data_return");
Log.d("MainActivity",returnedData);
}
break;
default:
}
}
step3:
运行效果
![](https://img.haomeiwen.com/i10971896/15671230211caba6.png)
网友评论