Android-Activity之间的数据传递

2/13/2017来源:iOS开发人气:400

今天是元宵节,祝大家元宵节快乐。

今天也是家父生日,希望家父身体健康,生日快乐。儿,不孝,不能陪家父在合家团圆的时刻过生日。

好了,进入正题,今天的主题是关于Activity之间的数据传递

Activity之间的数据传递的思路很简单,就是启动活动时传递数据

先来看一下逻辑图。

这里写图片描述

1.data 2.将data用一系列的putExtra()方法重载 3.把putExtra()方法放到Intent当中去 4.使用Intent进行页面转换 5.使用getIntent()方法获取用于启动Activity的Intent 6.调用getStringExtra()方法,传入相应的键值,取得数据

接下来看一下代码

MainActivity.java

package wlhwh.example.com.myapplication; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { PRivate Button mButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mButton = (Button)findViewById(R.id.button); mButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //被传递的数据在OnClick()方法里面 String data = "我是被传递的数据"; //页面跳转 Intent intent = new Intent(MainActivity.this,SecondActivity.class); //putExtra()方法重载,并放到intent当中 //putExtra()方法有两个参数,前一个是键,后一个是数据 intent.putExtra("data",data); startActivity(intent); } }); } }

SecondActivity.java

package wlhwh.example.com.myapplication; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; /** * Created by WLHWH on 2017/2/11. */ public class SecondActivity extends AppCompatActivity{ @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.second_activity); //getIntent()方法 Intent intent = getIntent(); //getStringExtra()方法获取intent中的数据 //getStringExtra(0方法直接获取putExtra()方法中的键值 String data = intent.getStringExtra("data"); //打印出结果 Log.d("SecondActivity",data); } }

结果图

这里写图片描述

那么到这里基本的简单的数据传递就差不多了

进阶篇

在了解了原理之后,我们就来在实际的应用中来应用一下Activity之间的数据传递。

FirstActivity.java

package wlhwh.example.com.datatransport_20170209; 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 FirstActivity extends Activity { private EditText mEditText_1; private EditText mEditText_2; private EditText mEditText_3; private Button mButton_1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_activity); mButton_1 = (Button)findViewById(R.id.button_1); mButton_1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //这里在OnClick()方法里面找到EditText实例的,我是第一次用到 mEditText_1 = (EditText)findViewById(R.id.edittext_int); mEditText_2 = (EditText)findViewById(R.id.edittext_double); mEditText_3 = (EditText)findViewById(R.id.edittext_string); //取得输入的int型数据 int et_int = Integer.parseInt(mEditText_1.getText().toString()); //取得输入的double型数据 double et_double = Double.parseDouble(mEditText_2.getText().toString()); //取得输入的String型数据(即字符串类型,什么数据符号都可以) String et_String = mEditText_3.getText().toString(); Intent intent = new Intent(); intent.setClass(FirstActivity.this,SecondActivity.class); //这里new一个bundle对象,并将要传递的数据传入 Bundle bundle = new Bundle(); //这里bundle获得输入对象的数据 bundle.putInt("et_int",et_int); bundle.putDouble("et_double",et_double); bundle.putString("et_String",et_String); //把bundle的对象给intent intent.putExtras(bundle); startActivityForResult(intent,1); } }); } }

SecondActivity.java

package wlhwh.example.com.datatransport_20170209; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.Button; import android.widget.TextView; /** * Created by WLHWH on 2017/2/9. */ public class SecondActivity extends AppCompatActivity{ private TextView mTextView_1; private TextView mTextView_2; private TextView mTextView_3; private Button mButton_2; Bundle bundle; Intent intent; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.second_activity); //取得intent中的bundle对象 intent = this.getIntent(); //取得bundle中的数据 bundle = intent.getExtras(); //分别获取不同的数据 int et_int = bundle.getInt("et_int"); double et_double = bundle.getDouble("et_double"); String et_String = bundle.getString("et_String"); mTextView_1 = (TextView)findViewById(R.id.textview_int); mTextView_2 = (TextView)findViewById(R.id.textview_double); mTextView_3 = (TextView)findViewById(R.id.textview_String); //显示不同的数据 mTextView_1.setText("我是取得的int型数据:"+et_int); mTextView_2.setText("我是取得的double型数据:"+et_double); mTextView_3.setText("我是取得的String型数据:"+et_String); } }

结果图

这里写图片描述

这里写图片描述

那么这里我们基本就把Activity之间的数据传递搞定了。