在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:

importandroid.app.Activity;importandroid.app.ActionBar;importandroid.app.Fragment;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.LayoutInflater;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.view.ViewGroup;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.TextView;importandroid.os.Build;publicclassMainActivityextendsActivity{EditTextedittext;TextViewtextview;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Buttonbotton1=(Button)this.findViewById(R.id.btn1);edittext=(EditText)this.findViewById(R.id.edit);textview=(TextView)this.findViewById(R.id.mytext1);botton1.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewarg0){//TODOAuto-generatedmethodstubIntentintent=newIntent(MainActivity.this,NewActivity.class);Bundlebundle=newBundle();bundle.putString("name",edittext.getText().toString());intent.putExtras(bundle);startActivity(intent);}});}}

NewActivity.java:

importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.TextView;publicclassNewActivityextendsActivity{TextViewtextview;protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_new);Buttonbotton1=(Button)this.findViewById(R.id.btn2);textview=(TextView)this.findViewById(R.id.mytext3);Intentintent=getIntent();Bundlebundle=intent.getExtras();textview.setText(bundle.getString("name"));botton1.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewarg0){//TODOAuto-generatedmethodstubstartActivity(newIntent(NewActivity.this,MainActivity.class));}});}}

activity_main:

<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><TextViewandroid:id="@+id/mytext1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="mainactivity"/><EditTextandroid:id="@+id/edit"android:layout_width="match_parent"android:layout_height="wrap_content"android:text=""/><Buttonandroid:id="@+id/btn1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="tonew"/></LinearLayout>

activity_new:

<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/mytext2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="newactivity"/><TextViewandroid:id="@+id/mytext3"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text=""/><Buttonandroid:id="@+id/btn2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="tomain"/></LinearLayout>

效果如下:

wKioL1TrAa3zXt3mAAClN7HnFvQ365.jpgwKioL1TrAUajz7FEAACVR5y_qiQ186.jpg


启动Activity并返回结果

有时候我们学院启动一个Activity并返回其结果,这是我们应该使用方法:

startActivityForResult(Intentintent,intrequestCode);

通过重写onActivityResult()对返回的参数进行处理,函数原型为:

protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata)//请求码与结果码

使用函数NewActivity.this.setResult(0,intent)和NewActivity.this.finish()设置返回参数


以上一个工程为基础,添加代码。使NewActivity.java中按键返回字符串,然后在MainActivity中把该字符串显示出来。

代码如下:

MainActivity

publicclassMainActivityextendsActivity{EditTextedittext;TextViewtextview;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Buttonbotton1=(Button)this.findViewById(R.id.btn1);edittext=(EditText)this.findViewById(R.id.edit);textview=(TextView)this.findViewById(R.id.mytext1);botton1.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewarg0){//TODOAuto-generatedmethodstubIntentintent=newIntent(MainActivity.this,NewActivity.class);Bundlebundle=newBundle();bundle.putString("name",edittext.getText().toString());intent.putExtras(bundle);startActivityForResult(intent,0);}});}protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){Bundlebundle=data.getExtras();textview.setText(bundle.getString("name"));}}

NewActivity:

publicclassNewActivityextendsActivity{privateTextViewtextview;protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_new);Buttonbotton1=(Button)this.findViewById(R.id.btn2);textview=(TextView)this.findViewById(R.id.mytext3);Intentintent=getIntent();Bundlebundle=intent.getExtras();textview.setText(bundle.getString("name"));botton1.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewarg0){//TODOAuto-generatedmethodstubIntentintent=newIntent();Bundlebundle=newBundle();bundle.putString("name","I'mfromNew");intent.putExtras(bundle);NewActivity.this.setResult(0,intent);NewActivity.this.finish();}});}}


效果如下:

wKioL1TrJMuTkoN9AACl-JCgfbE771.jpgwKiom1TrI8XQAUfiAACV7GR14Dk739.jpg

wKioL1TrJMyRPHGyAACb4NtUzaQ582.jpg


请求码与结果码

请求码:当不同业务打开同一个Activity时,用请求码判断是那个业务发出的打开请求。

例如当一个MainActivity中两个button都打开Activity1时,可以设置不同的请求码,然后在Activity1中可根据不同请求码判断是button1还是button2打开的Activity1。


结果码:当同一个业务打开多个Activity时,用结果码判断是那个Activity返回的参数。

例如当MainActivity中button同时打开Activity1,Activity2,Activity3,可以在三个Activity中设置不同的结果码,然后在MainActivity中的方法onActivityResult中根据结果码判断次结果是那个Activity返回的。


更多相关文章

  1. Android下用程序的方法为ListView设置分割线Divider样式
  2. Android的Animation之LayoutAnimation使用方法
  3. Android下NV21转ARGB的方法
  4. Android中Handler造成内存泄露解决方法
  5. android中完全退出当前应用程序的四种方法
  6. Android创建桌面快捷方式几种方法
  7. Android中获取控件宽高的4大方法
  8. Android 6.0开发实现关机菜单添加重启按钮的方法
  9. google被墙后,Android SDK下载和更新失败的解决方法!

随机推荐

  1. xml——json
  2. XML数据查询技术已经成为现今的研究热点
  3. PHP扩展之XML操作(二)——XML解析器安装及
  4. Jquery读取xml
  5. 使用XmlTextWriter生成XML文件
  6. PHP扩展之XML操作(一)——SimpleXML
  7. js字符串转换成xml并使用
  8. XML数据读取方式性能比较(二)
  9. 让Asp与XML交互
  10. XML 实体引用、注释、命名规则