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

作者:潘侯爷 时间:2022-10-21 12:36:36 

大家在网上购物时都有这样一个体验,在确认订单选择收货人以及地址时,会跳转页面到我们存入网站内的所有收货信息(包含收货地址,收货人)的界面供我们选择,一旦我们点击其中某一条信息,则会自动跳转到订单提交界面,此时的收货信息已经变为我们之前选择的收件信息、

为了实现这个功能,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首页布局:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.administrator.testactivity.MainActivity">
<TextView
 android:id="@+id/tv1"
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:hint="潘侯爷的属相"
 android:gravity="center"
 android:textSize="30sp"/>
<Button
 android:id="@+id/btn1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="right"
 android:text="确定"/>
</LinearLayout>

(2)layout中activity_main2.xml第二页布局:


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main2"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.administrator.day15.Main2Activity">
<ListView
 android:id="@+id/lv"
 android:layout_width="match_parent"
 android:layout_height="match_parent"></ListView>
</RelativeLayout>

(3)java中首页布局MainActivity.java实现代码:


import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button btn1;
private TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 btn1 = (Button) findViewById(R.id.btn1);
 tv1 = (TextView) findViewById(R.id.tv1);
 tv1.setClickable(true);
 tv1.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
   Intent intent = new Intent(MainActivity.this, Main2Activity.class);
   //设置启动intent以及对应的请求码
   startActivityForResult(intent, 2);
  }
 });
 btn1.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {
   Toast t= Toast.makeText(MainActivity.this, tv1.getText().toString(), Toast.LENGTH_SHORT);
   t.setGravity(Gravity.TOP,0,0);
   t.show();
  }
 });
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 super.onActivityResult(requestCode, resultCode, data);
 //建议添加逻辑判断(使请求码与结果码配对,确保返回结果是请求码所请求的)
 tv1.setText(data.getStringExtra("select"));
}
}

(4)java中第二页页布局Main2Activity.java实现代码:


import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class Main2Activity extends AppCompatActivity {
private ListView lv;
String[] names={"马","牛","虎","兔","龙"};
@Override
protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main2);
 lv = (ListView) findViewById(R.id.lv);
 //使用ArrayAdapter为ListView每个单元格填充数据
 ArrayAdapter<String> adapter = new ArrayAdapter<String>(Main2Activity.
   this,android.R.layout.simple_list_item_single_choice,names);
 //设置ListView为单选模式
 lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
 //为ListView中的每个ITERM设置单击事件
 lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
   Intent intent =new Intent(Main2Activity.this, MainActivity.class);;
   //将选中的item对应的信息配上键值装入Extra中供传递用
   intent.putExtra("select",names[position]);
   //设置3为结果码
   setResult(3,intent);
   finish();//结束当前Activity,返回上一个activity
  }
 });
 lv.setAdapter(adapter);
}
}

以上所述是小编给大家介绍的Android中activity处理返回结果的实现方式网站的支持!

来源:http://www.cnblogs.com/panhouye/archive/2016/12/22/6213287.html

标签:android,activity,返回
0
投稿

猜你喜欢

  • C#难点逐个击破(8):可空类型System.Nullable

    2023-07-04 14:49:40
  • Android 使用ViewPager实现左右循环滑动及轮播效果

    2022-10-28 15:23:21
  • android实现注册登录程序

    2021-06-28 00:38:44
  • Java8 HashMap键与Comparable接口小结

    2023-11-29 10:10:31
  • Mybatis的介绍、基本使用、高级使用

    2023-03-26 02:47:18
  • Android的HTTP类库Volley入门学习教程

    2022-06-08 11:56:51
  • c#自带缓存使用方法 c#移除清理缓存

    2021-09-07 10:20:15
  • C#中Linq的去重方式Distinct详解

    2022-01-23 03:53:36
  • Android自定义View实现通讯录字母索引(仿微信通讯录)

    2023-05-14 04:34:22
  • Android Studio卡很久(loading)的问题解决办法

    2023-12-08 02:22:23
  • Android编程实现WebView添加进度条的方法

    2023-07-06 03:16:46
  • C#分布式事务的超时处理实例分析

    2022-06-16 03:11:28
  • springboot结合maven实现多模块打包

    2022-01-16 07:13:51
  • Java 信号量Semaphore的实现

    2023-06-19 11:00:34
  • C#的回调机制浅析

    2022-04-06 19:10:32
  • java实现简易飞机大战

    2022-08-27 12:36:07
  • Android Tabhost使用方法详解

    2023-10-02 12:46:46
  • Java实现时间日期格式转换示例

    2023-06-06 04:45:11
  • Java面向对象基础,类,变量,方法

    2023-04-08 13:21:49
  • C++实现扫雷小游戏

    2022-07-27 22:59:39
  • asp之家 软件编程 m.aspxhome.com