• 【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);
        }
    }

    本文转自http://blog.csdn.net/ahuier/article/details/8958128

  • 相关阅读:
    wifi详解(四)
    wifi详解(三)
    wifi详解(二)
    wifi详解(一)
    Linux下GPIO驱动
    wpa_cli调试工具的使用
    WAPI
    java spring使用Jackson过滤
    JPA 一对多双向映射 结果对象相互迭代 造成堆栈溢出问题方法
    Javassist指引(二)--ClassPool
  • 原文地址:https://www.cnblogs.com/sishuiliuyun/p/3298983.html
Copyright © 2020-2023  润新知