有时候跳转屏幕,是要用一个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 ();
}
});
}
}
注释讲的比较明白了,就不多做解释,不懂或者发现错误,请您在评论中指出,十分感谢