Android学习笔记(六) 屏幕之间带有返回值的跳转

有时候跳转屏幕,是要用一个activity界面和用户进行交互,再将得到的结果返回给主屏幕,以进行接来的活动,这样的话简单的跳转就不能满足我们的要求,所以跳转后的活动要给启动它的活动一个返回值,

下面用api-demo中一个例子来进行讲解:

下面是负责接受返回值的java主程序:

package com.android.study;

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

public class Activity1 extends Activity
{
    protected void onCreate ( Bundle b )
    {
        super.onCreate ( b );
        setContentView ( R.layout.layout1 );
        text1 = ( TextView ) findViewById ( R.id.text1 );
        //TextView.BufferType.EDITABLE 表明文本是可追加字符的类型
        //同时继承自Text.BufferType.SPANNABLE,故也具有其修改文本
        //显示样式的功能
        text1.setText ( text1.getText() , TextView.BufferType.EDITABLE  );
        Button btn1 = ( Button ) findViewById ( R.id.btn1 );
        btn1.setOnClickListener (listener1  );
    }
    private TextView text1;
    
    static final private int GET_CODE = 0;
    /*final 放在类前面
        如果某个类在定义时,前面有修饰词final,则该类不能被继承
        final 放在属性前面
        属性声明时,如果前面有修饰词final关键字,则该属性值不能被更改,即此时该属性为常量
        final放在方法前面
         如果某个方法在定义时,前面有修饰词final,该方法可以被调用,不能重写*/
    private OnClickListener listener1 = new OnClickListener ()
    {
        public void onClick ( View v )
        {
            Intent intent = new Intent ( Activity1.this , Activity2.class );
            //下面的函数是启动一个有返回值的activity,GET_CODE是用于标记以
            //区别返回值确切是由哪一个子活动返回的
            startActivityForResult ( intent , GET_CODE );
        }
    };
    //下面的data (intent类型的)就是调用的activity的返回值
    // reuquestCode 就是对应到上面的GET_CODE的参数
    // resultCode 就是返回的结果状态
    protected void onActivityResult ( int requestCode , int resultCode  , Intent data )
    {
        if ( requestCode == GET_CODE )
        {
            Editable text = ( Editable ) text1.getEditableText();
            if ( resultCode == RESULT_CANCELED )
                text.append ( "(canceled)");
            else 
            {
                //通过Editable对文本进行追加编辑
                text.append ( "(okay ");
                text.append( Integer.toString ( resultCode ) );
                text.append ( ") ");
                if ( data != null )
                {
                    text.append ( data.getAction () );
                }
            }        
            text.append ( "\n" );
        }
    }
    
}

负责传回返回值的活动:

package com.android.study;

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 Activity2 extends Activity
{
    protected void onCreate ( Bundle b )
    {
        super.onCreate ( b );
        setContentView ( R.layout.layout2 );
        Button btn2 = ( Button ) findViewById ( R.id.btn2 );
        btn2.setOnClickListener ( new OnClickListener ()
        {
            public void onClick ( View v )
            {
                //设置返回的intent和状态
                setResult ( RESULT_OK ,  ( new Intent() ).setAction ( "Corky") );
                finish ( );
            }
        });
        Button btn3 = ( Button ) findViewById ( R.id.btn3 );
        btn3.setOnClickListener ( new OnClickListener ( ) 
        {
            public void onClick ( View v )
            {
                setResult ( RESULT_OK ,  ( new Intent ( ) ).setAction ( "Violet") );
                finish ();
            }
        });
    }
}

注释讲的比较明白了,就不多做解释,不懂或者发现错误,请您在评论中指出,十分感谢


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值