大家在网上购物时都有这样一个体验,在确认订单选择收货人以及地址时,会跳转页面到我们存入网站内的所有收货信息(包含收货地址,收货人)的界面供我们选择,一旦我们点击其中某一条信息,则会自动跳转到订单提交界面,此时的收货信息已经变为我们之前选择的收件信息、
为了实现这个功能,Android提供了一个机制,跳转到其他activity时,再返回,可以接受到其他activity返回的值,无需再start新的当前activity;下面的示例中,创建两个activity,其中在MainActivity中提示输入“您的属相”,然后单击TextView“您的属相”启动Main2Activity,在Main2Activity中选择属相,然后当返回MainActivity时,把之前Main2Activity中选择的数据原样返回给MainActivity。实现效果如下图:
核心实现步骤如下:
(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处理返回结果的实现方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍理解Android中Activity的方法回调,包括了理解Android中Activity的方法回调的使用技巧和注意事项,需要的朋友参考一下 为什么需要方法回调? 方法回调是功能定义和功能分离的一种手段,是一种松耦合的设计思想。在JAVA中回调是通过接口来实现的。作为一种系统架构,必须要有自己的运行环境,并且要提供用户的实现接口。 下面通过实例来模拟一下Android中Activit
特别是如果信号处理需要调用一个/一些活动,我如何实现? 我试图返回数据或异常,但它不起作用。 无法从信号方法返回数据。抛出异常将阻止工作流执行。
本文向大家介绍Android中SwipeBack实现右滑返回效果,包括了Android中SwipeBack实现右滑返回效果的使用技巧和注意事项,需要的朋友参考一下 现在有很多App支持右滑返回,比如知乎,效果比较赞。 于是自己对Activity和Fragment进行了继承,派生出SwipeBackActivity和SwipeBackFragment,用于对这种效果的实现,也就是只要继承这两个类就可
本文向大家介绍C语言获取Shell返回结果的实现方法,包括了C语言获取Shell返回结果的实现方法的使用技巧和注意事项,需要的朋友参考一下 Linux编程时候,如果我们需要调用shell命令或脚本通常使用system方法。如system("ls") 该方法返回值为0或-1,即成功或失败。而有的时候我们想要获取shell命令执行的结果,该怎么办呢? 我们可以将shell命令结果重定向到文件中,然后再
我有一个和一个。当接收到广播时,两个活动都需要完成。但是,如果位于之上,下面的代码将导致黑屏。
本文向大家介绍Python Sqlite3以字典形式返回查询结果的实现方法,包括了Python Sqlite3以字典形式返回查询结果的实现方法的使用技巧和注意事项,需要的朋友参考一下 sqlite3本身并没有像pymysql一样原生提供字典形式的游标。 但官方文档里已经有预留了相应的实现方案。 使用这个函数代替conn.raw_factory属性即可。 官方文档链接 以上就是小编为大家带来的Pyt