1.新建项目<IntentputExtra>
2.在layout目录下,在first_layout.xml中添加按钮Button1
3.在layout目录下,新建second_layout.xml,并添加按钮Button2
4.在Java目录下,在MainActivity.java中,加载布局,使用startActivityForResult方法,数据可以返回给上一个活动
修改主活动的方法onCreate
5.在Java目录下,新建SecondActivity.java,并加载布局, 当传递到活动MyActivity2中,修改其onCreate方法
6.在AndroidManifest.xml下,注册2个活动,并将MainActivity作为主活动
代码如下:
layout——>activity_main.xml(2)
<Button
android :id= "@+id/button1"
android :layout_width= "match_parent"
android :layout_height= "wrap_content"
android :text= "myButton1" />
android :id= "@+id/button1"
android :layout_width= "match_parent"
android :layout_height= "wrap_content"
android :text= "myButton1" />
layout——>second_layout.xml(3)
<Button
android :id= "@+id/button2"
android :layout_width= "match_parent"
android :layout_height= "wrap_content"
android :text= "myButton2" />
android :id= "@+id/button2"
android :layout_width= "match_parent"
android :layout_height= "wrap_content"
android :text= "myButton2" />
java——>MainActivity .java(4)
public class MainActivity
extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState) ;
requestWindowFeature(Window. FEATURE_NO_TITLE) ;
setContentView(R.layout. activity_main) ;
Button button1=(Button)findViewById(R.id. button1) ;
button1.setOnClickListener( new View.OnClickListener() {
public void onClick(View view) {
// //——下面返回数据给上一个活动
//跳转到活动MyActivity2
//第一个参数:上下文,第二个参数:目标活动类
Intent intent = new Intent(MainActivity. this,SecondActivity. class) ; //显式Intent
//向活动MyActivity2传递数据
intent.putExtra( "info" , "我来自活动1") ;
//启动活动
startActivityForResult(intent , 0) ;
}
}) ;
}
/**
* 接受活动返回的数据,该方法对应于startActivityForResult(intent, 0)方法,请求码只要是唯一值就好,这里传入了0
* requestCode:请求码
* resultCode:返回数据时的处理结果
* data:返回数据的Intent
*/
protected void onActivityResult( int requestCode , int resultCode , Intent data) {
//进行判断
if( 0 == requestCode && resultCode == RESULT_OK){
//获取数据
String feedBack = data.getStringExtra( "feedBack") ;
Toast. makeText(getApplicationContext() , feedBack , Toast. LENGTH_SHORT).show() ;
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState) ;
requestWindowFeature(Window. FEATURE_NO_TITLE) ;
setContentView(R.layout. activity_main) ;
Button button1=(Button)findViewById(R.id. button1) ;
button1.setOnClickListener( new View.OnClickListener() {
public void onClick(View view) {
// //——下面返回数据给上一个活动
//跳转到活动MyActivity2
//第一个参数:上下文,第二个参数:目标活动类
Intent intent = new Intent(MainActivity. this,SecondActivity. class) ; //显式Intent
//向活动MyActivity2传递数据
intent.putExtra( "info" , "我来自活动1") ;
//启动活动
startActivityForResult(intent , 0) ;
}
}) ;
}
/**
* 接受活动返回的数据,该方法对应于startActivityForResult(intent, 0)方法,请求码只要是唯一值就好,这里传入了0
* requestCode:请求码
* resultCode:返回数据时的处理结果
* data:返回数据的Intent
*/
protected void onActivityResult( int requestCode , int resultCode , Intent data) {
//进行判断
if( 0 == requestCode && resultCode == RESULT_OK){
//获取数据
String feedBack = data.getStringExtra( "feedBack") ;
Toast. makeText(getApplicationContext() , feedBack , Toast. LENGTH_SHORT).show() ;
}
}
}
java——>SecondActivity .java(5)
public class SecondActivity
extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState) ;
//隐藏标题栏
requestWindowFeature(Window. FEATURE_NO_TITLE) ;
//加载自定义布局文件 activity2_my.xml
setContentView(R.layout. second_layout) ;
//接受活动1传递来的数据
Intent intent = getIntent() ;
String info = intent.getStringExtra( "info") ;
//即获取主活动传递来的数据,使用Toast显示
Toast. makeText(getApplicationContext() , info , Toast. LENGTH_SHORT).show() ;
//——为Button2添加点击监听事件:创建一个Intent,回传数据给主活动,同时销毁当前活动。使用setResult方法回传数据。
Button button2 = (Button) findViewById(R.id. button2) ;
//为Button2添加点击监听事件
button2.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
//构建一个Intent 返还数据,创建一个Intent,回传数据给主活动,同时销毁当前活动。使用setResult方法回传数据。
Intent intent2 = new Intent() ;
intent2.putExtra( "feedBack" , "我来自活动2,我已经收到了你的信息,这是我给你的反馈!") ;
setResult( RESULT_OK , intent2) ; //返还数据
finish() ; //销毁当前活动
}
}) ;
}
//需要注意的是,用户按下back时也可以返回,因此在活动MyActivity2中还需要重写onBackPressed方法
public void onBackPressed() {
//构建一个Intent 返还数据
Intent intent2 = new Intent() ;
intent2.putExtra( "feedBack" , "我来自活动2,我已经收到了你的信息,这是我给你的反馈!") ;
setResult( RESULT_OK , intent2) ; //返还数据
finish() ; //销毁当前活动
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState) ;
//隐藏标题栏
requestWindowFeature(Window. FEATURE_NO_TITLE) ;
//加载自定义布局文件 activity2_my.xml
setContentView(R.layout. second_layout) ;
//接受活动1传递来的数据
Intent intent = getIntent() ;
String info = intent.getStringExtra( "info") ;
//即获取主活动传递来的数据,使用Toast显示
Toast. makeText(getApplicationContext() , info , Toast. LENGTH_SHORT).show() ;
//——为Button2添加点击监听事件:创建一个Intent,回传数据给主活动,同时销毁当前活动。使用setResult方法回传数据。
Button button2 = (Button) findViewById(R.id. button2) ;
//为Button2添加点击监听事件
button2.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
//构建一个Intent 返还数据,创建一个Intent,回传数据给主活动,同时销毁当前活动。使用setResult方法回传数据。
Intent intent2 = new Intent() ;
intent2.putExtra( "feedBack" , "我来自活动2,我已经收到了你的信息,这是我给你的反馈!") ;
setResult( RESULT_OK , intent2) ; //返还数据
finish() ; //销毁当前活动
}
}) ;
}
//需要注意的是,用户按下back时也可以返回,因此在活动MyActivity2中还需要重写onBackPressed方法
public void onBackPressed() {
//构建一个Intent 返还数据
Intent intent2 = new Intent() ;
intent2.putExtra( "feedBack" , "我来自活动2,我已经收到了你的信息,这是我给你的反馈!") ;
setResult( RESULT_OK , intent2) ; //返还数据
finish() ; //销毁当前活动
}
}
manifests——> AndroidManifest.xml(6)
<activity
android
:name=
"com.administrator.intentputextra.MainActivity"
android :label= "@string/app_name" >
<intent-filter>
<action android :name= "android.intent.action.MAIN" />
<category android :name= "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android :name= "com.administrator.intentputextra.SecondActivity" ></activity>
android :label= "@string/app_name" >
<intent-filter>
<action android :name= "android.intent.action.MAIN" />
<category android :name= "android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android :name= "com.administrator.intentputextra.SecondActivity" ></activity>
结果如下:点击button2或返回键的时候会返回到button1,并提示……