AndroidActivity之间信息的传递-创新互联
在Android中,活动是一个界面,当需要在界面之间相互切换的时候,需要用到Intent(意图)进行消息传递。使用startActivity(Intent)函数启动另一个活动。
专业成都网站建设公司,做排名好的好网站,排在同行前面,为您带来客户和效益!成都创新互联为您提供成都网站建设,五站合一网站设计制作,服务好的网站设计公司,成都网站设计、网站制作、外贸营销网站建设负责任的成都网站制作公司!Bundle是一个key-Value类,可以用他携带信息。
Bundle.putString("key","String")方法和Bundle.getString("key")方法放入与取出信息。
可以将信息放入到Intent中,使用方法Intent.putExtras(bundle)方法和Intent.getExtras();方法将信息放入和取出。
示例工程:两个.java,MainActivity,java中输入字符串,点击按键,启动NewActivity,java,并将字符串显示出来。
详细代码如下:
MainActivity.java:
import android.app.Activity; import android.app.ActionBar; import android.app.Fragment; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.os.Build; public class MainActivity extends Activity { EditText edittext; TextView textview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button botton1=(Button)this.findViewById(R.id.btn1); edittext=(EditText)this.findViewById(R.id.edit); textview=(TextView)this.findViewById(R.id.mytext1); botton1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent=new Intent(MainActivity.this,NewActivity.class); Bundle bundle=new Bundle(); bundle.putString("name", edittext.getText().toString()); intent.putExtras(bundle); startActivity(intent); } }); } }
NewActivity.java:
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class NewActivity extends Activity { TextView textview; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new); Button botton1=(Button)this.findViewById(R.id.btn2); textview=(TextView)this.findViewById(R.id.mytext3); Intent intent=getIntent(); Bundle bundle=intent.getExtras(); textview.setText(bundle.getString("name")); botton1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub startActivity(new Intent(NewActivity.this,MainActivity.class)); } }); } }
activity_main:
activity_new:
效果如下:
启动Activity并返回结果
有时候我们学院启动一个Activity并返回其结果,这是我们应该使用方法:
startActivityForResult(Intent intent,int requestCode);
通过重写onActivityResult()对返回的参数进行处理,函数原型为:
protected void onActivityResult(int requestCode,int resultCode,Intent data) // 请求码与结果码
使用函数NewActivity.this.setResult(0,intent)和NewActivity.this.finish()设置返回参数
以上一个工程为基础,添加代码。使NewActivity.java中按键返回字符串,然后在MainActivity中把该字符串显示出来。
代码如下:
MainActivity
public class MainActivity extends Activity { EditText edittext; TextView textview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button botton1=(Button)this.findViewById(R.id.btn1); edittext=(EditText)this.findViewById(R.id.edit); textview=(TextView)this.findViewById(R.id.mytext1); botton1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent=new Intent(MainActivity.this,NewActivity.class); Bundle bundle=new Bundle(); bundle.putString("name", edittext.getText().toString()); intent.putExtras(bundle); startActivityForResult(intent,0); } }); } protected void onActivityResult(int requestCode,int resultCode,Intent data) { Bundle bundle=data.getExtras(); textview.setText(bundle.getString("name")); } }
NewActivity:
public class NewActivity extends Activity { private TextView textview; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_new); Button botton1=(Button)this.findViewById(R.id.btn2); textview=(TextView)this.findViewById(R.id.mytext3); Intent intent=getIntent(); Bundle bundle=intent.getExtras(); textview.setText(bundle.getString("name")); botton1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent=new Intent(); Bundle bundle=new Bundle(); bundle.putString("name", "I'm from New"); intent.putExtras(bundle); NewActivity.this.setResult(0,intent); NewActivity.this.finish(); } }); } }
效果如下:
请求码与结果码
请求码:当不同业务打开同一个Activity时,用请求码判断是那个业务发出的打开请求。
例如当一个MainActivity中两个button都打开Activity1时,可以设置不同的请求码,然后在Activity1中可根据不同请求码判断是button1还是button2打开的Activity1。
结果码:当同一个业务打开多个Activity时,用结果码判断是那个Activity返回的参数。
例如当MainActivity中button同时打开Activity1,Activity2,Activity3,可以在三个Activity中设置不同的结果码,然后在MainActivity中的方法onActivityResult中根据结果码判断次结果是那个Activity返回的。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文题目:AndroidActivity之间信息的传递-创新互联
文章网址:http://cdiso.cn/article/djcdss.html