Android学习(八) 打开Activity

在Android中打开窗口有两种方式,第一种是不需要返回值的,第二种是带返回值的。

 

Main.xml文件,程序从这个窗口开始执行。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent" 

    android:orientation="vertical">



    <Button

        android:id="@+id/btn_open1"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="第一种方式打开" />



    <Button

        android:id="@+id/btn_open2"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="第二种方式打开" />



</LinearLayout>

 

FirstActivity.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" >



    <TextView

        android:id="@+id/textView1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="第一个窗口" />

    

</LinearLayout>

 

SecendActivity.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" >



    <TextView

        android:id="@+id/textView1"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:text="第二个窗口" />



    <Button

        android:id="@+id/btnresult"

        android:layout_width="match_parent"

        android:layout_height="wrap_content" 

        android:text="回传数据"/>



</LinearLayout>

 

main.java

package com.example.demo;



import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;



public class MainActivity extends Activity {



    Button btn_open1;

    Button btn_open2;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);



        //第一种方式打开窗口,无返回值

        btn_open1 = (Button) findViewById(R.id.btn_open1);

        btn_open1.setOnClickListener(new OnClickListener() {



            @Override

            public void onClick(View v) {

                // 第一个为当前类的上下文参数,不能直接使用this,需要使用类名.this

                // 第二个参数为目标文件的反射对象

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

                // 启动新窗口,不需要返回值

                startActivity(intent);

            }

        });



        //第二种打开方式,带返回值得

        btn_open2 = (Button) findViewById(R.id.btn_open2);

        btn_open2.setOnClickListener(new OnClickListener() {



            @Override

            public void onClick(View v) {

                // 第一个为当前类的上下文参数,不能直接使用this,需要使用类名.this

                // 第二个参数为目标文件的反射对象

                Intent intent = new Intent(MainActivity.this, SecendActivity.class);



                // 第一个参数为intent

                // 第二个参数为请求的标志,用来区别提交的activity

                startActivityForResult(intent, 1);

            }

        });

    }



    /**

     * 通过这个方法用来接收新页面的返回数据,返回内容为Intent对象

     * 第一个参数为请求的id,第一个页面传递过来的标志,用来区别是哪个activity传递过来的。 第二个参数为结果的id,第二个页面返回的标志

     * 第三个参数为返回的intent对象,通过他获取跳转页面的返回内容

     */

    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        // TODO Auto-generated method stub

        super.onActivityResult(requestCode, resultCode, data);



        //requestCode判断是哪个按钮提交的请求,用来区分提交的请求

        //resultCode判断是哪个页面返回的结果,用来区分返回的页面请求。

        if (requestCode == 1 && resultCode == 2) {

            String content = data.getStringExtra("data");

            Toast.makeText(this, content, 1).show();  //弹出消息框

        }

    }



}

 

SecendActivity.java

package com.example.demo;



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;



public class SecendActivity extends Activity {



    Button btn;

    String content = "第二个窗口返回的数据";



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.secend_activity);



        btn = (Button) findViewById(R.id.btnresult);



        btn.setOnClickListener(new OnClickListener() {

            @Override

            public void onClick(View v) {

                Intent data = new Intent();  //创建返回的Intent对象

                data.putExtra("data", content);   //为intent对象设置值

                setResult(2, data);               //设置回传结果

                

                finish();     //关闭窗口

            }

        });



    }

}

 

 

点击第一个按钮会打开第一个窗口。

低级第二个按钮会打开第二个窗口,在第二个窗口中点击回传按钮,返回数据到第一个窗口,并关闭当前窗口。

你可能感兴趣的:(Android学习)