两个界面之间的信息传送通过 startActivityForResult()方法

本文展示了一个Android应用中使用Lidroid XUtils库进行网络GET请求的具体实现,包括请求数据、解析响应并显示到界面上的过程。同时,还介绍了如何通过按钮触发新的活动(Activity)并在返回时更新数据显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.example.jsontextt;



import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

import com.lidroid.xutils.HttpUtils;
import com.lidroid.xutils.exception.HttpException;
import com.lidroid.xutils.http.ResponseInfo;
import com.lidroid.xutils.http.callback.RequestCallBack;
import com.lidroid.xutils.http.client.HttpRequest.HttpMethod;

public class MainActivity extends Activity implements OnClickListener{
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.i("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", "开始获取数据");
        tv=(TextView) findViewById(R.id.tv);
        tv.setOnClickListener(this);
        onLoad();
    }

    private void onLoad() {
        // TODO Auto-generated method stub
        String url="http://gandong.3gso.com:8080/Bemoved/" +
                "userpublish_ReadUserBemoved?type=Userbemove&userId" +
                "=f1e9de9447912cc00147913261c80005&Number" +
                "=0&login_user_id" +
                "=f1e9de944be05591014be2490cb5002e";
        new HttpUtils().send(HttpMethod.GET, url, new RequestCallBack<String>() {

            @Override
            public void onFailure(HttpException arg0, String arg1) {
                // TODO Auto-generated method stub
                
            }

            @Override
            public void onSuccess(ResponseInfo<String> arg0) {
                // TODO Auto-generated method stub
                String data=arg0.result;
                Log.i("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", data);
                tv.setText(data);
            }
            
        });
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.tv:
            Intent intent=new Intent();
            intent.setClass(MainActivity.this, MainActivity2.class);
            startActivityForResult(intent, 123);
            break;

        default:
            break;
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == 201) {
            Bundle bundle=data.getExtras();
            String str=" ";
            str=bundle.getString("edtinfo");
            tv.setText(str);
            Log.i("11111111111111111111111", str);
        }else if(resultCode == 200){
            
        }    
        if(requestCode ==123 ){
            System.out.println("MainActivity传递过去的");
        }else{
            System.out.println("不是");
        }
    }



}
package com.example.jsontextt;

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.EditText;

public class MainActivity2 extends Activity{
    private EditText edt;
    private Button but;
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        edt=(EditText) findViewById(R.id.edt1);
        but=(Button) findViewById(R.id.but);
        
        but.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Intent intent=new Intent(MainActivity2.this, MainActivity2.class);
                
                intent.putExtra("edtinfo", edt.getText().toString());
                setResult(201,intent);
                MainActivity2.this.finish();
            }
        });
     }

}


转载于:https://www.cnblogs.com/dpxf/p/4318867.html

### Android `startActivityForResult` 方法使用指南 #### 方法概述 在 Android 应用开发中,`startActivityForResult(Intent intent, int requestCode)` 是一种用于启动另一个 Activity 并等待其返回结果的方式。通过此方法可以请求目标 Activity 执行某些操作并将数据回传给调用方。 #### 参数说明 - **Intent**: 定义要启动的目标 Activity 的意图对象。 - **requestCode**: 请求码,是一个整数值,用来区分不同的请求场景,在回调函数 `onActivityResult()` 中会用到它匹配对应的响应。 #### 生命周期与回调机制 当调用了 `startActivityForResult()` 后,当前的 Activity 将进入暂停状态直到子 Activity 结束并返回结果。此时系统会自动触发父 Activity 的 `onActivityResult(int requestCode, int resultCode, Intent data)` 方法来接收反馈的数据[^1]。 #### 示例代码演示 下面提供一段完整的示例程序展示如何利用 `startActivityForResult()` 实现基本的功能交互: ```java public class MainActivity extends AppCompatActivity { private static final int SETTINGS_REQUEST_CODE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button settingsButton = findViewById(R.id.settings_button); // 设置按钮监听器以打开设置页面 settingsButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { openSettingsActivity(); } }); } /** * 跳转至设置活动 */ private void openSettingsActivity(){ Intent intent = new Intent(this, SettingsActivity.class); startActivityForResult(intent, SETTINGS_REQUEST_CODE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data){ super.onActivityResult(requestCode, resultCode, data); if (requestCode == SETTINGS_REQUEST_CODE && resultCode == RESULT_OK){ String settingValue = data.getStringExtra("setting_key"); Toast.makeText(this,"Setting Value:" + settingValue ,Toast.LENGTH_SHORT).show(); } } } ``` 在此例子中,我们定义了一个常量 `SETTINGS_REQUEST_CODE` 来标记这次特定的任务需求;接着实现了 `openSettingsActivity()` 函数负责构建跳转逻辑并通过指定参数发起请求;最后重写了 `onActivityResult()` 处理来自子 Activity 返回的信息[^1]。 另外值得注意的是,从 Android API Level 30 开始推荐采用新的方式替代传统的 `startActivityForResult()` 接口——即借助于 `registerForActivityResult()` 动态注册回调处理器完成相同目的[^2]。 对于文件选择这样的具体应用场景,则可参照如下模式配置相关组件行为: ```java Button chooseFileButton = findViewById(R.id.button_choose_file); chooseFileButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, FilePickerActivity.class); startActivityForResult(intent, REQUEST_CODE_PICK_FILE); } }); ``` 这里展示了怎样绑定 UI 控件动作去激活外部服务或者内部其他模块的操作流,并且同样依赖预设好的请求标志符来进行后续跟踪管理. 至于涉及到权限验证后再执行敏感任务的情况也可以参考类似的结构设计思路: ```java button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (checkPermissions()) { startSpeechRecognition(); } else { requestPermissions(); } } }); ``` 这段摘录体现了先检查必要条件满足与否再决定是否继续推进业务进程的最佳实践之一[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值