Activity创建、跳转、传值

Activity 是一个用来展示用户界面并且提供用户交互的应用程序组件
一、如何创建Activity?

1.创建一个子类继承Activity或者是activity的子类
2.重写activity中的onCreate()方法 在该方法中调用setContentView()函数加载activity的布局
3.在清单文件中注册activity

 <application>
    ...
      <activity android:name="activity的包名.类名">
    ...
  </application>

activity跳转方式:

Intent intent=new Intent(x.this,x.class);
startActivity(intent);

Intent intent=new Intent();
ComponentName cn=new ComponentName(x.this,x.class);
intent.setComponent(cn);
startActivity(intent);

Intent intent=new Intent();
intent.setClass(x.this,x.class);
startActivity(intent);

Intent intent=new Intent();
intent.setClassName(x.this,x.class.getName());
startActivity(intent);

二、Activity的生命周期

onCreate() 表示当activity创建时回调的函数
onStart() 表示当activity能够被用户看到时回调的函数
onResume() 表示当activity能够获取用户焦点时 能够与用户交互时回调的函数
onPause() 表示当activity失去用户焦点时回调的函数 启动了另外的activity
onStop() 表示当activity完全被遮挡时回调的函数
onRestart() 表示当activity重新被启动时回调的函数
onDestory() 表示当activity被销毁时回调的函数

Activity横竖屏生命周期
默认情况下横竖屏切换时activity会先销毁再重新创建 onPause()-onStop()-onDestory() onCreate()-onStart()-onResume()

<activity  android:configChange="orientation|screenSize|keyboardHidden">  

三、Activity之间的传值
一、无回传值
1.Intent :

A_activity:
Intent intent=new Intent(x.this,x.class);
intent.putExtra(String key,xxx);
startActivity();
B_activity:
Intent intent=getIntent();
String str=intent.getStringExtra(key);

2.Bundle :

A_activity:
Intent intent=new Intent(x.this,x.class);
Bundle bundle=new Bundle();
bundle.putString(String key,xxxx);
intent.putExtras(bundle);
startActivity();
B_activity:
Intent intent=getIntent();
Bundle bundle=intent.getExtras();
String str=bundle.getString(key);

3.Application
适合同一个app中多个activtiy或者是两个不存在直接跳转的activity之间的传值.

1.创建一个类继承application 将需要传递的数据作为application的属性
2.需要传递数据的activity
MyApplication app=(MyApplication)getApplication();
app.setXx();
3.需要取值的activity
MyApplication app=(MyApplication)getApplication();
app.getXx();
4.在清单文件中进行注册

  <application android:name="自定义applicaiton的包名.类名">
  </applcation>   

二、有回传值

A_activity:
Intent intent=new Intent(x.this,x.class);
startActivityForResult(intent,请求码);
..onActivityResult(int requestCode,int resultCode,Intent data){
对回传Intent中的数据进行处理
}
B_activity:
setResult(Activity.RESULT_OK,Intent用来回传数据的意图对象);
finish();

三、static静态传值

A_activity:
类名.静态属性=需要存储的值
B_activity:
取值=类名.静态属性

public class StaticPerson {
    private static String name;
    private static int age;
    public static String getName() {
        return name;
    }
    public static void setName(String name) {
        StaticPerson.name = name;
    }
    public static int getAge() {
        return age;
    }
    public static void setAge(int age) {
        StaticPerson.age = age;
    }


}
/**
 * 演示静态static传值
 */
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    //单击按钮传值 static
    public void sendValues(View view){
        //将需要传递的数据存储到静态变量中
        StaticPerson.setName("凤姐");
        StaticPerson.setAge(18);

        startActivity(new Intent(MainActivity.this, ResultActivity.class));
    }

}
public class ResultActivity extends Activity {
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        tv=(TextView) findViewById(R.id.textView1);

        String name=StaticPerson.getName();
        int age=StaticPerson.getAge();

        tv.setText("姓名:"+name+",年龄:"+age);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值