紧接这上面的显式intent和隐式intent
1 使用intent向下一个activity传递数据
此时,intent中不仅包含自己启动的上下文,还有数据
Intent intent=new Intent(MainActivity.this,ThirdActivity.class);
所以,需要加入数据
intent.putExtra("extra_data","i come from mainactivity");
第一个称为键值,就是在另一个activity中取值时需要的(如果这样说来,那一个intent肯定可以通过不同的键值来获得传递许多的数据)我的猜测是对的
就这样用就好了
- //将要传递的值附加到Intent对象
- intent.putExtra("et1", et1Str);
- intent.putExtra("et2", et2Str);
至于可以用多少个,不太清楚,以后在研究吧
加入数据后,就startactivity(intent)即可
在另外一个activity中要把这个取出来
先要在这个刚刚启动的activity中new一个新的intent 来装传进来的intent
Intent intent=getIntent();
之后可以用intent.getStringData(“extra_data ”这就是刚刚那个键值);
放到一个str里面就可以了
2启动一个activityA中启动activityB,然后从B中获得数据后,返回给A
总共分为三部分
在A中启动B 用startactivityforresult
在B中返回数据,回到A
在A中获得B中返回的数据
启动B的时候,这个方法要传两个东西,一个是代表你将要启动谁的intent,一个叫做请求码,request code,这个是返回的时候,知道是谁返回的,所以应是一个唯一的值
在B中构造数据也差不多,new一个intent 然后用putextra方法设一个键值,弄一个数据
关键再随后要一个setResult(RESULT_OK,intent);这应该是设置结果的一个函数
最后来个finish();
A这边处理这个数据需要重写onActivityResult(int requestcode ,int resultcode ,Intent data)函数 从这个intent的名字也可以看出,这个东西就是用来传数据的
在里面用一个swich(requestcode){
case 1:if(resultcode==RESULT_OK){
string str=data.getStringdata("键值")
};
}
为了考察这个requestcode的功能,我自己稍微改了一下例子的代码。所以,今天要贴下来
BaseActivity
package com.example.sss.activitytest; import android.app.Activity; import android.os.Bundle; import android.util.Log; /** * Created by sss on 2015/8/24. */ public class BaseActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("BaseActivity",getClass().getSimpleName()); } }
MainActivity
package com.example.sss.activitytest; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button1=(Button)findViewById(R.id.btnStartSecondActivity); Button button2=(Button)findViewById(R.id.btnStartThirdActivity); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this,SecondActivity.class); intent.putExtra("extra_data","i come from mainactivity"); startActivityForResult(intent,1); } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this,ThirdActivity.class); intent.putExtra("extra_data","i come from mainactivity"); startActivityForResult(intent,2); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode){ case 1: if(resultCode==RESULT_OK){ String returndata=data.getStringExtra("return_data"); Toast.makeText(this,returndata,Toast.LENGTH_SHORT).show(); } case 2: if(resultCode==RESULT_OK){ String returndata=data.getStringExtra("return_data"); Toast.makeText(this,returndata,Toast.LENGTH_SHORT).show(); } } } }
SecondActivity
package com.example.sss.activitytest; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.net.Inet4Address; public class SecondActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Intent intent=getIntent(); String data=intent.getStringExtra("extra_data"); Toast.makeText(this,data,Toast.LENGTH_SHORT).show(); Button button2=(Button)findViewById(R.id.btnComebackToMainActivity); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(); intent.putExtra("return_data","hello i come from second activity"); setResult(RESULT_OK, intent); finish(); } }); } @Override public void onBackPressed() { Intent intent=new Intent(); intent.putExtra("return_data","hello i come from second activity"); setResult(RESULT_OK, intent); finish(); } }
ThirdActivity
package com.example.sss.activitytest; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Toast; import java.net.Inet4Address; public class ThirdActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Intent intent=getIntent(); String data=intent.getStringExtra("extra_data"); Toast.makeText(this,data,Toast.LENGTH_SHORT).show(); Button button2=(Button)findViewById(R.id.btnComebackToMainActivity); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(); intent.putExtra("return_data","hello i come from third activity"); setResult(RESULT_OK,intent); finish(); } }); } @Override public void onBackPressed() { Intent intent=new Intent(); intent.putExtra("return_data","hello i come from third activity"); setResult(RESULT_OK, intent); finish(); } }