首页 > 其他 > 详细

startActivity-两种start 方式

时间:2015-09-24 00:40:10      阅读:185      评论:0      收藏:0      [点我收藏+]

对于activity的启动有两种方式

1.startActivity-这种方式比较简单,我们就不做讲解了

2.startActivityForResult-这种启动方式可以实现父子activity双向数据的传递,下面我们就结合demo学习这种启动方式

直接看代码

下面有三个activity(HeadSetActivity-主activity,MyActivity1,MyActivity2),用的是同一个layout(activity_main.xml),具体如下

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/abc"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/tv"
            android:layout_width="match_parent"
            android:layout_height="400dp"
            android:background="@drawable/select"
            android:gravity="center"
            android:textSize="30dp"
            android:text="main_activity"
            android:textColor="#ff0000" />

        <Button
            android:id="@+id/bt1"
            android:layout_width="170dp"
            android:layout_height="100dp"
            android:layout_below="@+id/tv"
            android:src="@drawable/select"
            android:text="activity_1"
            android:textColor="#ff0000" />

        <Button
            android:id="@+id/bt2"
            android:layout_width="170dp"
            android:layout_height="100dp"
            android:layout_alignParentRight="true"
            android:layout_below="@+id/tv"
            android:src="@drawable/select"
            android:text="activity_2"
            android:textColor="#ff0000" />
    </RelativeLayout>

</LinearLayout>

HeadSetActivity

package com.example.alert;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class HeadSetActivity extends Activity {
    private TextView textView;
    private Button button1;
    private Button button2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.tv);
        button1 = (Button) findViewById(R.id.bt1);
        button2 = (Button) findViewById(R.id.bt2);
        button1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                //启动activity1
                Intent intent = new Intent("activity_one");
                startActivityForResult(intent, 1);
            }
        });
        button2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                //启动activity2
                Intent intent = new Intent("activity_two");
                startActivityForResult(intent, 2);
            }
        });

    }
//这个方法主要是接受子activity返回的数据的
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        //requestCode 这个是启动子activity的时候,父activity给予的标签,父分组管理
        //resultCode 这个是子activity返回来的标签,是子activity分组管理
        //data里面是子activity返回来的数据
        if (requestCode == 1) {
            if (resultCode == 10) {
                
                String string = data.getExtras().getString("activity_finish");
                textView.setText("com from activity 1 and finish"+" \n" + string);
                
            } else if (resultCode == 100) {
                
                String string = data.getExtras().getString("activity_no_finish");
                textView.setText("com from activity 1 and no finish"+" \n" + string);
            }
        } else if (requestCode == 2) {
            if (resultCode == 20) {
                textView.setText("com from activity 2 and finish");
            } else if (resultCode == 120) {
                textView.setText("com from activity 2 and no finish");
            }

        }
    }

}

MyActivity1

package com.example.alert;

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

public class MyActivity1 extends Activity {
    private TextView textView;
    private Button button1;
    private Button button2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.tv);
        textView.setText("i am activity1");
        button1 = (Button) findViewById(R.id.bt1);
        button1.setText("setresult but no finish");
        button2 = (Button) findViewById(R.id.bt2);
        button2.setText("setresult but and finish");
        button1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent intent = new Intent();
                Bundle bundle = new Bundle();
                bundle.putString("activity_no_finish", "i am no finish");
                intent.putExtras(bundle);

                //不传输数据
                //MyActivity1.this.setResult(100);
                //可以传输数据,数字是对应parent 中的resultCode
                MyActivity1.this.setResult(100, intent);

            }
        });
        button2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent intent = new Intent();
                Bundle bundle = new Bundle();
                bundle.putString("activity_finish", "i am finish");
                intent.putExtras(bundle);
                MyActivity1.this.setResult(10,intent);
                finish();
            }
        });

    }

}

MyActivity2

package com.example.alert;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MyActivity2 extends Activity {
    private TextView textView;
    private Button button1;
    private Button button2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.tv);
        textView.setText("i am activity2");
        button1 = (Button) findViewById(R.id.bt1);
        button1.setText("setresult but no finish");
        button2 = (Button) findViewById(R.id.bt2);
        button2.setText("setresult but and finish");
        button1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                MyActivity2.this.setResult(120);
                
            }
        });
        button2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                MyActivity2.this.setResult(20);
                finish();
            }
        });

    }
}

接下来我们直接演示结果

技术分享

startActivity-两种start 方式

原文:http://www.cnblogs.com/zhangshuli-1989/p/4833968.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!