Android组件通信

来源:互联网 发布:apache 进程池 编辑:程序博客网 时间:2024/06/06 01:56

1、Intent启动Activity的启动方式有显式启动和隐式启动,此demo中使用显式启动的方法,启动步骤如下:

(1) 注册两个Activity以及主activity中的Intent-filter;

(2) 在主Activity中创建一个Intent对象;

(3) 调用startActivity(Intent &)启动新Activity;

2、设计一个主Activity和一个子Activity(Sub-Activity),使用主Activity上的按钮启动子Activity,并将子Activity的一些信息返回给主Activity,并显示在主Activity上


主Activity:

package edu.hrbeu.ActivityCommunication;


import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;


public class ActivityCommunicationActivity extends Activity {

private static final int SUBACTIVITY1 = 1;

TextView textView;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        textView = (TextView)findViewById(R.id.textShow);
        final Button btn1 = (Button)findViewById(R.id.btn1);
        
        btn1.setOnClickListener(new OnClickListener(){
        public void onClick(View view){
        Intent intent = new Intent(ActivityCommunicationActivity.this, SubActivity1.class);
                startActivityForResult(intent, SUBACTIVITY1);
        }
        });
    }


@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

switch(requestCode){
case SUBACTIVITY1:
if (resultCode == RESULT_OK){
Uri uriData = data.getData();
textView.setText(uriData.toString());
}
break;
}
}
}


子Activity:

package edu.hrbeu.ActivityCommunication;


import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;


public class SubActivity1 extends Activity {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.subactivity1);
        
        final EditText name = (EditText)findViewById(R.id.name);
        final EditText psd = (EditText)findViewById(R.id.psd);
        Button btnOK = (Button)findViewById(R.id.btnOK);
        
        btnOK.setOnClickListener(new OnClickListener(){
        public void onClick(View view){
        String uriString = "用户名:"+name.getText().toString()+" 密码:"+psd.getText().toString();
        Uri data = Uri.parse(uriString);
       
        Intent result = new Intent(null, data);
       
        setResult(RESULT_OK, result); //设置返回码
        finish();
        }
        });
    }
}

Android_manifast:

<?xml version="1.0" encoding="UTF-8"?>


-<manifest android:versionName="1.0" android:versionCode="1" package="edu.hrbeu.ActivityCommunication" xmlns:android="http://schemas.android.com/apk/res/android">


<uses-sdk android:minSdkVersion="14"/>




-<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">




-<activity android:label="@string/app_name" android:name=".ActivityCommunicationActivity">




-<intent-filter>


<action android:name="android.intent.action.MAIN"/>


<category android:name="android.intent.category.LAUNCHER"/>


</intent-filter>


</activity>


<activity android:label="@string/app_name" android:name=".SubActivity1"> </activity>


<activity android:label="@string/app_name" android:name=".SubActivity2"> </activity>


</application>


</manifest>

原创粉丝点击