Android------startActivityForResult

借鉴:https://blog.csdn.net/sunchaoenter/article/details/6612039

在启动另外一个Activity的时候,有两种方法,一种是直接使用startActivity,另外一种就是使用startActivityForResult。

startActivityForResult的主要作用就是它可以回传数据,假设我们有两个页面,首先进入第一个页面,里面有一个按钮,用于进入下一个页面,当进入下一个页面时,进行设置操作,并在其finish()动作或者back动作后,将设置的值回传给第一个页面,从而第一个页面来显示所得到的值。这个有一点像回调方法,就是在第二个页面finish()动作或者back动作后,会回调第一个页面的onActivityResult()方法,所以我们可以重写一下这个方法。

第一个界面

package org.sunchao;
 
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
 
public class TestStartActivityForResultActivity extends Activity implements
        OnClickListener {
    private TextView mText01;
    private TextView mText02;
    private Button button01;
    private Button button02;
    private Intent mIntent;
    private int requestCode;
 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mText01 = (TextView) findViewById(R.id.mText01);
        mText02 = (TextView) findViewById(R.id.mText02);
        button01 = (Button) findViewById(R.id.mButton01);
        button02 = (Button) findViewById(R.id.mButton02);
        button01.setOnClickListener(this);
        button02.setOnClickListener(this);
        mText01.setText("01");
        mText02.setText("02");
 
        mIntent = new Intent();
        mIntent.setClass(TestStartActivityForResultActivity.this,
                Activity02.class);
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.mButton01:
            // 请求码的值随便设置,但必须>=0
            requestCode = 0;
            startActivityForResult(mIntent, requestCode);
            break;
        case R.id.mButton02:
            requestCode = 2;
            startActivityForResult(mIntent, requestCode);
            break;
        default:
            break;
        }
    }
 
    // 回调方法,从第二个页面回来的时候会执行这个方法
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        String change01 = data.getStringExtra("change01");
        String change02 = data.getStringExtra("change02");
        // 根据上面发送过去的请求吗来区别
        switch (requestCode) {
        case 0:
            mText01.setText(change01);
            break;
        case 2:
            mText02.setText(change02);
            break;
        default:
            break;
        }
    }
}

  第二个界面

复制代码
package org.sunchao;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class Activity02 extends Activity {
    private int resultCode = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity02);
        Intent mIntent = new Intent();
        mIntent.putExtra("change01", "1000");
        mIntent.putExtra("change02", "2000");
        // 设置结果,并进行传送
        this.setResult(resultCode, mIntent);
        // this.finish();
    }

}
复制代码

 

posted on   施琅水月  阅读(116)  评论(0编辑  收藏  举报

编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示