Android开发之Activity总结(一)

来源:互联网 发布:php 编译 with zlib 编辑:程序博客网 时间:2024/05/17 01:10

Activity(活动)是Android四大组件之一;它跟用户直接面对面交互。首先重要的一点是你的每一个活动都要在清单文件中注册。

Intent是Android程序中各个组件之间进行交互的一种重要方式;它不仅可以指明当前组件想要执行的动作,还可以在不同的组件之间传递数据。分为显示Intent和隐式Intent。

显示Intent代码如下:

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

隐式Intent需要指定一系列更加抽象的action和category。
在清单文件中代码:

<activity android:name=".SecondActivity"            android:launchMode="singleInstance">            <intent-filter>                <action android:name="com.gyq.activitytest.ACTION_START" />                <category android:name="android.intent.category.DEFAULT" />                <category android:name="com.gyq.activitytest.MY_CATEGORY" />            </intent-filter>        </activity>

FirstActivity中代码如下:

 @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.btn_first_button1:                Intent intent = new Intent("com.gyq.activitytest.ACTION_START");                intent.addCategory("com.gyq.activitytest.MY_CATEGORY");                startActivity(intent);                break;        }    }

隐式Intent不仅可以启动自己程序内的活动,还可以启动其他程序的活动,这使得Android多个应用程序之间的共享成为了可能;代码如下:
1,直接跳转到拨号界面,只要按拨打键就可以了。

Intent intent = new Intent(Intent.ACTION_DIAL);       intent.setData(Uri.parse("tel:555"));       startActivity(intent);

2,直接跳转到百度网页

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

向下一个活动传递数据:
1,FirstActivity.java中按钮点击事件中的代码,跳转到第二个界面:

String data = "亲爱的:你好么?";Intent intent = new Intent(FirstActivity.this,SecondActivity.class);//通过intent的将本界面的数据传递到第二个界面。intent.putExtra("data",data);startActivity(intent);

2,SecondActivity.java接收数据;

Intent intent = getIntent();String content = intent.getStringExtra("data");//content就是上个界面中data的内容。Log.d(TAG, "onCreate: "+content);

返回数据给上一个活动:startAcitivityForResult()方法
1,活动一代码:

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);startActivity(intent);@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        switch (requestCode) {            case 1:                if (resultCode == RESULT_OK) {                    String resultData = data.getStringExtra("result");                    Log.d(TAG, "onActivityResult: "+resultData);                }        }    }

2,活动二代码:

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);        Button btn2 = (Button)findViewById(R.id.btn_second_button2);        btn2.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //传递数据给上一个activity。                Intent intent = new Intent();                intent.putExtra("result","亲爱的:我很好。");                setResult(RESULT_OK,intent);                finish();            }        });    }    //按返回键可以销毁当前界面,然后将数据回传到第一个界面。    @Override    public void onBackPressed() {        //传递数据给上一个activity。        Intent intent = new Intent();        intent.putExtra("result","亲爱的:我很好。");        setResult(RESULT_OK,intent);        finish();    }
0 0