Android中Activity处理返回结果的实现方式

笛里谁知壮士心,沙头空照征人骨。这篇文章主要讲述Android中Activity处理返回结果的实现方式相关的知识,希望能为你提供帮助。
大家在网上购物时都有这样一个体验,在确认订单选择收货人以及地址时,会跳转页面到我们存入网站内的所有收货信息(包含收货地址,收货人)的界面供我们选择,一旦我们点击其中某一条信息,则会自动跳转到订单提交界面,此时的收货信息已经变为我们之前选择的收件信息、
为了实现这个功能,android提供了一个机制,跳转到其他activity时,再返回,可以接受到其他activity返回的值,无需再start新的当前activity;下面的示例中,创建两个activity,其中在MainActivity中提示输入“您的属相”,然后单击TextView“您的属相”启动Main2Activity,在Main2Activity中选择属相,然后当返回MainActivity时,把之前Main2Activity中选择的数据原样返回给MainActivity。实现效果如下图:

Android中Activity处理返回结果的实现方式

文章图片

核心实现步骤如下:(1)在MainActivity中设置启动带结果requestCode的Activity
(2)在MainActivity中设置处理返回结果的方法
(3)在Main2Activity中设置返回结果
具体布局以及功能实现代码如下: (1)layout中activity_main.xml首页布局:
1 < ?xml version="1.0" encoding="utf-8"?> 2 < LinearLayout 3xmlns:android="http://schemas.android.com/apk/res/android" 4xmlns:tools="http://schemas.android.com/tools" 5android:id="@+id/activity_main" 6android:layout_width="match_parent" 7android:layout_height="match_parent" 8android:orientation="vertical" 9tools:context="com.example.administrator.testactivity.MainActivity"> 10< TextView 11android:id="@+id/tv1" 12android:layout_width="match_parent" 13android:layout_height="wrap_content" 14android:hint="潘侯爷的属相" 15android:gravity="center" 16android:textSize="30sp"/> 17< Button 18android:id="@+id/btn1" 19android:layout_width="wrap_content" 20android:layout_height="wrap_content" 21android:layout_gravity="right" 22android:text="确定"/> 23 < /LinearLayout>

(2)layout中activity_main2.xml第二页布局:
1 < ?xml version="1.0" encoding="utf-8"?> 2 < RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 3xmlns:tools="http://schemas.android.com/tools" 4android:id="@+id/activity_main2" 5android:layout_width="match_parent" 6android:layout_height="match_parent" 7tools:context="com.example.administrator.day15.Main2Activity"> 8< ListView 9android:id="@+id/lv" 10android:layout_width="match_parent" 11android:layout_height="match_parent"> < /ListView> 12 < /RelativeLayout>

(3)java中首页布局MainActivity.java实现代码:
1 import android.content.Intent; 2 import android.support.v7.app.AppCompatActivity; 3 import android.os.Bundle; 4 import android.view.Gravity; 5 import android.view.View; 6 import android.widget.Button; 7 import android.widget.TextView; 8 import android.widget.Toast; 9 public class MainActivity extends AppCompatActivity { 10private Button btn1; 11private TextView tv1; 12@Override 13protected void onCreate(Bundle savedInstanceState) { 14super.onCreate(savedInstanceState); 15setContentView(R.layout.activity_main); 16btn1 = (Button) findViewById(R.id.btn1); 17tv1 = (TextView) findViewById(R.id.tv1); 18tv1.setClickable(true); 19tv1.setOnClickListener(new View.OnClickListener() { 20@Override 21public void onClick(View v) { 22Intent intent = new Intent(MainActivity.this, Main2Activity.class); 23//设置启动intent以及对应的请求码 24startActivityForResult(intent, 2); 25} 26}); 27btn1.setOnClickListener(new View.OnClickListener() { 28@Override 29public void onClick(View v) { 30Toast t=Toast.makeText(MainActivity.this, tv1.getText().toString(), Toast.LENGTH_SHORT); 31t.setGravity(Gravity.TOP,0,0); 32t.show(); 33} 34}); 35} 36@Override 37protected void onActivityResult(int requestCode, int resultCode, Intent data) { 38super.onActivityResult(requestCode, resultCode, data); 39//建议添加逻辑判断(使请求码与结果码配对,确保返回结果是请求码所请求的) 40tv1.setText(data.getStringExtra("select")); 41} 42 }

(4)java中第二页页布局Main2Activity.java实现代码:
1 import android.content.Intent; 2 import android.support.v7.app.AppCompatActivity; 3 import android.os.Bundle; 4 import android.view.View; 5 import android.widget.AdapterView; 6 import android.widget.ArrayAdapter; 7 import android.widget.ListView; 8 public class Main2Activity extends AppCompatActivity { 9private ListView lv; 10String[] names={"马","牛","虎","兔","龙"}; 11@Override 12protected void onCreate(Bundle savedInstanceState) { 13super.onCreate(savedInstanceState); 14setContentView(R.layout.activity_main2); 15lv = (ListView) findViewById(R.id.lv); 16//使用ArrayAdapter为ListView每个单元格填充数据 17ArrayAdapter< String> adapter = new ArrayAdapter< String> (Main2Activity. 18this,android.R.layout.simple_list_item_single_choice,names); 19//设置ListView为单选模式 20lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 21//为ListView中的每个ITERM设置单击事件 22lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { 23@Override 24public void onItemClick(AdapterView< ?> parent, View view, int position, long id) { 25Intent intent =new Intent(Main2Activity.this, MainActivity.class); ; 26//将选中的item对应的信息配上键值装入Extra中供传递用 27intent.putExtra("select",names[position]); 28//设置3为结果码 29setResult(3,intent); 30finish(); //结束当前Activity,返回上一个activity 31} 32}); 33lv.setAdapter(adapter); 34} 35 }

【Android中Activity处理返回结果的实现方式】 

    推荐阅读