美文网首页
🙇Android-- 活动是什么

🙇Android-- 活动是什么

作者: YI_YI_ | 来源:发表于2020-02-11 21:34 被阅读0次

    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)启动活动的最佳写法

    相关文章

      网友评论

          本文标题:🙇Android-- 活动是什么

          本文链接:https://www.haomeiwen.com/subject/jhitfhtx.html