Activity系列讲解---返回结果的处理

Posted 无业的酒吧老板,不入流的软件工程师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activity系列讲解---返回结果的处理相关的知识,希望对你有一定的参考价值。

  设想一下:由当前Activity跳转到其它Activity,从其它Activity再返回到当前Activity时,如何获取其它Activity存放的数据?下面用一个例子讲解,

    点击selsect按钮跳转到另一界面,同时选择一个电话号码;然后将这个电话号码带回来显示在当前界面的EditText上。

1.代码实现:

(1)ResultActivity.class 

/**
*结果界面
*/

public class ResultActivity extends AppCompatActivity {

    private static final int REQUEST_CODE_1 = 0x1;//请求码
    private EditText et;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);

        et = (EditText) findViewById(R.id.et_phone_data);

    }

    /**
     * 选择一个电话号码
     * @param view
     */
    public void selectClick(View view){
        Intent intent = new Intent(this,PhoneListActivity.class);
        //参数:intent,请求编码
        startActivityForResult(intent,REQUEST_CODE_1);

    }

    //重写该方法来处理返回的结果
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==REQUEST_CODE_1 && resultCode==RESULT_OK){
            String nums = data.getStringExtra("no");
            et.setText(nums);
        }
    }

    /**
     * 拨打电话--弹出手机里拨打电话的界面
     * @param view
     */
    public void CallClick(View view){
        String phoneNum = et.getText().toString();
        Intent intent = new Intent();

        intent.setAction(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:"+phoneNum));
        startActivity(intent);
    }

}

 

(2)PhoneListActivity.class

/**
*选择电话号码界面
*/

public class PhoneListActivity extends AppCompatActivity {
    private ListView lv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_phone_list);

        lv = (ListView) findViewById(R.id.lv_listView_phone);

        final String[] numbers = {"18253563602","18810623657","15949822985","15854388317","15275323389","13521205590"};
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,android.R.id.text1,numbers);
        lv.setAdapter(adapter);
        //每一项的单击事件
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String no = numbers[position];
                Intent intent = new Intent();
                intent.putExtra("no",no);
                setResult(RESULT_OK,intent);//设置返回码
                finish();//结束当前界面
            }
        });
    }


}

  

(3)activity_result.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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.langdon.taiyang.androidtest.activity.ResultActivity">

    <EditText
        android:id="@+id/et_phone_data"
        android:hint="请选择一个电话号码"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/bt_phone_select"
        android:text="select"
        android:onClick="selectClick"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <Button
        android:id="@+id/bt_phone_call"
        android:text="call"
        android:onClick="CallClick"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

  

(4)activity_phone_list.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_phone_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.langdon.taiyang.androidtest.activity.PhoneListActivity">
<ListView
    android:id="@+id/lv_listView_phone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
</RelativeLayout>

 2.运行结果:(选择15275323389的电话号码,并将数据返回,显示在当前界面的EditText上)

以上是关于Activity系列讲解---返回结果的处理的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin基础从入门到进阶系列讲解(入门篇)Activity的简介和使用

Kotlin基础从入门到进阶系列讲解(入门篇)Activity的使用

Kotlin基础从入门到进阶系列讲解(进阶篇)Android之Activity的生命周期

Kotlin基础从入门到进阶系列讲解(基础篇)Fragment的基本使用

Kotlin基础从入门到进阶系列讲解(基础篇)Fragment的基本使用

Activity系列:startActivityForResult的用法