🙇Android-- 活动是什么

2020-02-11  本文已影响0人  YI_YI_

1.活动的基本用法

(1)手动创建活动
step1:
手动创建一个活动
step2:
创建成功后
(2)创建和加载布局

界面和逻辑分离
step1:


step1

step2:


step2
step3:
step3
(3)在AndroidMainfest文件中注册
在mainfest中注册界面.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>

结果:


image.png
(5)在活动中使用Menu

step1:


新建menu资源文件.png

step2:
逻辑代码:


界面菜单按钮.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;
    }

运行效果:


image.png image.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:
运行效果
点击主页面按钮,跳转成功后的界面


image.png
(2)使用隐式Intent

step1:
在mainfest.xml 文件的活动中,添加action标签


image.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);

结果:


image.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);


运行效果:


传递数据打印
(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:
运行效果


image.png

3. 活动的生命周期

(1)返回栈
(2)活动状态
(3)活动的生存期
(4)体验活动的生命周期
(5)活动被回收了怎么办

🔫4. 活动的启动模式

(1)standard
(2)singleTop
(3)singleTask
(4)singleInstance

5. 活动的最佳实践

(1)知晓当前是哪一个活动
(2)随时随地退出程序
(3)启动活动的最佳写法
上一篇下一篇

猜你喜欢

热点阅读