【Android 复习】:从Activity中返回数据
在实际的应用中,我们不仅仅要向Activity传递数据,而且要从Activity中返回数据,虽然返回数据和传递类似,也可以采用上一讲中的四种方式来传递数据,但是一般建议采用Intent对象的方式的来返回数据,使用这种方式返回数据,需要使用StartActivityForResult方法来显示Activity。
需求:如下图所示:输入 a 和 b 的值,然后点击输入计算机结果,跳转到另外Activity,输入结果,点击得出结果按钮,将得到的数值放在 第三个输入框中。使用StartActivityForResult()方式来实现。
程序Demo:
1. IntentResult.java
public class IntentResult extends Activity { private Button button; private EditText inputA, inputB, result; private final static int RESQUESTCODE = 1; private final static int RESULTCODE_TO_INTENTRESULT = 2; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); initComponent(); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int a = Integer.parseInt(inputA.getText().toString()); int b = Integer.parseInt(inputB.getText().toString()); Intent intent = new Intent(IntentResult.this, Other.class); intent.putExtra("a", a); intent.putExtra("b", b); startActivityForResult(intent, RESQUESTCODE); // 如果RESQUESTCODE // >= 0,表示可以返回结果 } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); // resultCode == RESULT_OK 表示另外一个Activity已经结束了功能 if (resultCode == RESULTCODE_TO_INTENTRESULT) { if (requestCode == RESQUESTCODE) { int returnResult = data.getIntExtra("result", 0); result.setText(String.valueOf(returnResult)); } } } private void initComponent() { button = (Button) findViewById(R.id.button); inputA = (EditText) findViewById(R.id.one); inputB = (EditText) findViewById(R.id.two); result = (EditText) findViewById(R.id.three); } }
2. Other.java
public class Other extends Activity { private Button button; private TextView tx; private EditText inputResult; private final static int RESULTCODE_TO_INTENTRESULT = 2; /* * public int getIntExtra (String name, int defaultValue) defaultValue * 默认值是0,则返回键所对应的值 */ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.other); initComponent(); Intent intent = getIntent(); int a = intent.getIntExtra("a", 0); int b = intent.getIntExtra("b", 0); tx.setText(a + " + " + b + " = ? "); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int result = Integer.parseInt(inputResult.getText().toString()); Intent intent = new Intent(); intent.putExtra("result", result); // 通过Intent对象返回结果,setResult方法 // 注意:在setResult(resultCode, // data)方法中,resultCode表示从Other这个Activity跳转到IntentResult这个Activity的标记,必须是大于1的整数 // 注意的时候resultCode 必须与IntentResult中的 onActivityResult(int // requestCode, int resultCode, Intent data)的参数resultCode要一致的。 setResult(RESULTCODE_TO_INTENTRESULT, intent); finish();// 结束当前的Activity的声明周期 } }); } private void initComponent() { button = (Button) findViewById(R.id.button); inputResult = (EditText) findViewById(R.id.result); tx = (TextView) findViewById(R.id.msg); } }
分类:
【Android 复习】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端