Android开发之Activity总结(一)

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();
    }

你可能感兴趣的:(Android,基础)