zoukankan      html  css  js  c++  java
  • android学习回顾--Activity活动

    学习android也有一段时间,回顾总结一下;

    创建Activity

      在创建项目的时候,Android Studio默认会让创建一个活动,先选择一个Activity模板,之后的创建过程跟手动的过程一样,这里选择Add No Activity创建一个空项目,以手动的方式添加一个活动;打开目录app/src/main/java/packagename,此时应该是空的,我们右键点击包,new->Activity->Empty Activity,会弹出创建活动的对话框,命名为FirstActivity,此时有三个选项,Generate LayoutFile(自动创建布局)、Launcher Activity(设置为项目主活动)、Backwarks compatibility(项目启用向下兼容模式),只勾选Backwarks compatibility,布局以及设置主活动之后手动进行,点击Finish完成创建。

      Android Studio自动创建了如下代码,任何Activity都应该重写onCreate,代码只是调用父类的onCreate方法,之后要加入我们自己的很多逻辑。

    public class FirstActivity extends AppCompatActivity { 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState); 
        }
    }

      现在来创建加载布局,在app/src/main/res目录右键,new->Directory,会弹出一个新建目录的窗口,创建一个名为layout的目录,然后右键点击layout目录,选择Layout resource file,之后会弹出新建布局的窗口,命名为first_layout,点击ok完成新建。修改first_layout的内容,添加一个Button。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"> 
        <Button
            android:id="@+id/button_1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="button 1" 
            />
    </LinearLayout>

      修改FirstActivity的代码,使用setContentView方法加载布局,如下所示:

    public class FirstActivity extends AppCompatActivity { 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.first_layout);
        }
    }

       所有活动都要在AndroidManifest.xml中注册,打开app/main/AndroidManifest.xml,在Application中已经有FirstActivity的注册了,Android Studio在创建活动的时候帮我们注册了,在<application>标签中使用<activity>标签注册活动,android:name指定具体注册哪一个活动,最后还要配置项目的主活动,项目才能跑起来,在<activity>标签中加入<intent-filter>标签声明action category即可,如下所示:

      <intent-filter>
           <action android:name="android.intent.action.MAIN" /> 
           <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>

      至此活动可以顺利启动了。

    在活动中使用Toast,代码如下:

    public class FirstActivity extends AppCompatActivity { 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.first_layout); 
            Button btn = (Button)findViewById(R.id.button_1) ;
            btn.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    Toast.makeText(FirstActivity.this,"hello",Toast.LENGTH_SHORT).show(); 
                }
            });
        }
    }

    调用finish()方法可以销毁活动。

    使用Intent在活动中穿梭

      创建另一个活动SecondActivity,使用自动生成布局文件,Intent是android各组件之间进行交互的重要方式,分为显式Intent和隐式Intent,修改FirstActvity的代码,传入FirstActivity.this作为上下文,传入SecondActivity.class作为启动目标,意图明显,为显示Intent,代码如下:

    public class FirstActivity extends AppCompatActivity { 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.first_layout); 
            Button btn = (Button)findViewById(R.id.button_1) ;
            btn.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {  
                    Intent intent = new Intent(FirstActivity.this,SecondActivity.class); 
                    startActivity(intent);
                }
            });
        }
    }

      隐式Intent通过指定一系列更为抽象的action、category信息,交由系统分析这个Intent,找出合适的活动启动,修改AndroidManifest.xml,为活动SecondActivity配置action、category,action只能配置一个,category可以配置多个,之后修改FirstActivity,代码如下:

     <activity
                android:name=".SecondActivity"
                android:label="This is SecondActivity">
                <intent-filter>
                    <action android:name="com.example.activitytest.ACTION_START" /> 
                    <category android:name="android.intent.category.DEFAULT" />
                    <category android:name="com.example.activitytest.MY_CATEGORY" />
                </intent-filter>
     </activity>
    public class FirstActivity extends AppCompatActivity { 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.first_layout); 
            Button btn = (Button)findViewById(R.id.button_1) ;
            btn.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {  
                    Intent intent = new Intent("com.example.yujj.activitytest.ACTION_START");
                    //intent.addCategory("com.example.activitytest.MY_CATEGORY");
              startActivity(intent);
                }
            });
        }
    }

    隐式Intent的更多应用

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("http://www.baidu.com"));
    
    Intent intent = new Intent(Intent.ACTION_DIAL);
    intent.setData(Uri.parse("tel:10086"));

    传递数据

    Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
    intent.putExtra("extra_data","hello world");
    startActivity(intent);

    接收数据

    Intent intent = getIntent();
    String data = intent.getStringExtra("extra_data");

    返回数据给上一个活动

    FirstActivity:
      Intent intent = new Intent(FirstActivity.this,SecondActivity.class); 
      startActivityForResult(intent,1);
    
      @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            switch (requestCode)
            {
                case 1:
                    if(resultCode == RESULT_OK) {
                        String returndata = data.getStringExtra("data_return");
                        Log.d(TAG, returndata);
                    }
                    break;
                default:
            } 
        }
    
    
    SecondActivity:
      Button btn = (Button)findViewById(R.id.button_2);
      btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent();
                    intent.putExtra("data_return","hello FirstActivity");
                    setResult(RESULT_OK,intent);
                    finish();
                }
      });
  • 相关阅读:
    js操作class值
    四、多表连接
    三、约束
    根据出生日期计算年龄
    二、MySql数据操作(二)
    一、MySql基本语句(一)
    jquery基本操作
    纯js实现全选,全不选,反选
    css的基础知识1
    表格的使用
  • 原文地址:https://www.cnblogs.com/JunjianYu/p/7405048.html
Copyright © 2011-2022 走看看