首页 > 系统 > Android > 正文

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

2019-12-12 04:14:19
字体:
来源:转载
供稿:网友

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

为了实现这个功能,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处理返回结果的实现方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表