zoukankan      html  css  js  c++  java
  • 在Activity间传递数据的四种方法及返回结果

    1.通用方法

    使用intent的PutExtra方法传入,用getExtra等方法获得数据

    主类

    Intent intent=new Intent(MainActivity.this,OtherActivity.class);
                    intent.putExtra("name", "张三");
                    intent.putExtra("age", 23);
                    intent.putExtra("address", "北京");
                    startActivity(intent);

    other类

            textView=(TextView) findViewById(R.id.msg);
            Intent intent=getIntent();
            int age=intent.getIntExtra("age", 0);
            String name=intent.getStringExtra("name");
            String address=intent.getStringExtra("address");        textView.setText("age--->>"+age+"name-->>"+name+"address-->>"+address);

    2.利用静态变量传递

    直接在主类中设置other类中的数据,进而实现主类到other类间的数据传递

    主类

    Intent intent=new Intent();
                    intent.setClass(MainActivity.this,OtherActivity.class);
                    OtherActivity.age=23;
                    OtherActivity.name="jack";
                    startActivity(intent);

    other类

    public class OtherActivity extends Activity{
        private TextView textView;
        public static String name;
        public static int age;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.other);
            textView=(TextView) findViewById(R.id.msg);
            textView.setText("-name-->>"+name+"-age-->>"+age);
        }
    }

    3.使用全局变量传递

    创建myApp继承Application,通过设置Application中的数据,在Activity中传递

    MyApp类

    package com.example.intent4;
    
    import android.app.Application;
    
    public class MyApp extends Application{
    
        public String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
        @Override
        public void onCreate() {
            super.onCreate();
            setName("张三");
        }
    }

    主类

    myApp=(MyApp) getApplication();
                    myApp.setName("jack");//修改之后的名称
                    Intent intent=new Intent(MainActivity.this,OtherActivity.class);
                    startActivity(intent);

    other类

    textView=(TextView) findViewById(R.id.msg);
            myApp=(MyApp) getApplication();
            textView.setText("-appname-->>"+myApp.getName());

    4.使用剪切板(不太会用)

     5.返回结果

    package com.example.intent5;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    //返回结果
    public class MainActivity extends Activity {
    
        private EditText one,two,result;
        private Button button;
        private final static int REQUESTCODE=1;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            button=(Button) this.findViewById(R.id.calculate);
            one=(EditText) findViewById(R.id.one);
            two=(EditText) findViewById(R.id.two);
            result=(EditText) findViewById(R.id.result);
            button.setOnClickListener(new View.OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    int a=Integer.parseInt(one.getText().toString());
                    int b=Integer.parseInt(two.getText().toString());
                    Intent intent=new Intent(MainActivity.this,OtherActivity.class);
                    intent.putExtra("a", a);
                    intent.putExtra("b", b);
                    startActivityForResult(intent,REQUESTCODE);//可以返回结果
                }
            });
        }
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            //用于接受回传过来的值
            if(resultCode==2){
                if(requestCode==REQUESTCODE){
                    int three=data.getIntExtra("three", 0);
                    result.setText(String.valueOf(three));
                    
                }
            }
        }
        
        
    
    }
    package com.example.intent5;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class OtherActivity extends Activity {
    
        private Button button;
        private TextView textView;
        private EditText editText;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.other);
            button=(Button) this.findViewById(R.id.button1);
            textView=(TextView) this.findViewById(R.id.msg);
            editText=(EditText) findViewById(R.id.editText);
            Intent intent=getIntent();
            int a=intent.getIntExtra("a", 0);
            int b=intent.getIntExtra("b", 0);
            textView.setText(a+"+"+b+"="+"?");
            button.setOnClickListener(new View.OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    Intent intent=new Intent();
                    int three=Integer.parseInt(editText.getText().toString());
                    intent.putExtra("three", three);
                    //通过Intent对象返回结果,setResult方法
                    setResult(2, intent);
                    finish();//结束当前Activity的生命周期
                }
            });
        }
    
    }

    注意:返回结果主类需要调用startForRexult方法及onActivityResult(),判断请求码及结果码是否正确,other类要写setResult(2, intent); finish();

  • 相关阅读:
    servlet学习之servletAPI编程常用的接口和类
    问题解决
    HTTP Status 500 – Internal Server Error
    用数组模拟队列
    稀疏数组
    值传递机制及几道网红题目
    关于Tomcat配置问题
    Servlet学习笔记
    面向对象笔记
    数组中涉及的常见算法
  • 原文地址:https://www.cnblogs.com/Yvettey-me/p/4002370.html
Copyright © 2011-2022 走看看