今天是元宵节,祝大家元宵节快乐。
今天也是家父生日,希望家父身体健康,生日快乐。儿,不孝,不能陪家父在合家团圆的时刻过生日。
好了,进入正题,今天的主题是关于Activity之间的数据传递。
Activity之间的数据传递的思路很简单,就是启动活动时传递数据。
先来看一下逻辑图。

接下来看一下代码
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之间的数据传递搞定了。
新闻热点
疑难解答