Android中Activity的跳转与数据的传递案例(装备的选择)
2017-03-27 17:03
591 查看
今天我们介绍一个综合案例,包括activity跳转和回传数据功能
点击给宝宝购买装备:
会出来几件装备供主人选择,点击不同 的装备会回传到第一个Activity不同的值:
做一个这样有趣的小案例
1、做一个装备选择的布局,(附上宝宝的图片):
2、与之对应的Activity中需要给Button设置一个点击事件,在这里把所有的控件初始化一下
3、创建装备界面activity_shopping,用布局嵌套,嵌套三个相对布局。
4、创建Info实体类,封装装备信息。为了方便数据的传递,在这里让Info类实现Serializable接口。
5、创建ShopActivity
6、回传数据,编写MainActivity
7、updataProgressBar()方法,更新进度条和后面的数值。
现在这个小案例就完成了。
点击给宝宝购买装备:
会出来几件装备供主人选择,点击不同 的装备会回传到第一个Activity不同的值:
做一个这样有趣的小案例
1、做一个装备选择的布局,(附上宝宝的图片):
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.edu.bzu.equipments.MainActivity"> <ImageView android:id="@+id/img1" android:src="@drawable/baby" android:layout_gravity="center_horizontal" android:layout_marginTop="45dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="主人,快给小宝宝购买装备吧!" /> <!--通过表格布局来实现整齐的效果--> <TableLayout android:layout_marginTop="25dp" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="wrap_content"> <TableRow android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_weight="1" android:layout_width="0dp" android:layout_marginLeft="20dp" android:layout_height="wrap_content" android:text="生命值:"> </TextView> <!--进度条--> <ProgressBar android:layout_marginLeft="5dp" android:layout_weight="3" style="?android:attr/progressBarStyleHorizontal" <!--默认的为圆形,需要修改一个它的style属性,变成水平的--> android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/progressBar1" /> <TextView android:id="@+id/tv1" android:layout_weight="1" android:layout_width="0dp" android:layout_marginLeft="20dp" android:layout_height="wrap_content" android:text="0"> </TextView> </TableRow> <TableRow android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_weight="1" android:layout_width="0dp" android:layout_marginLeft="20dp" android:layout_height="wrap_content" android:text="攻击力:"> </TextView> <ProgressBar android:layout_weight="3" android:layout_marginLeft="5dp" style="?android:attr/progressBarStyleHorizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/progressBar2" /> <TextView android:id="@+id/tv2" android:layout_weight="1" android:layout_width="0dp" android:layout_marginLeft="20dp" android:layout_height="wrap_content" android:text="0"> </TextView> </TableRow> <TableRow android:layout_marginTop="10dp" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_weight="1" android:layout_width="0dp" android:layout_marginLeft="20dp" android:layout_height="wrap_content" android:text="敏捷度:"> </TextView> <ProgressBar android:layout_weight="3" android:layout_marginLeft="5dp" style="?android:attr/progressBarStyleHorizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/progressBar3" /> <TextView android:id="@+id/tv3" android:layout_weight="1" android:layout_width="0dp" android:layout_marginLeft="20dp" android:layout_height="wrap_content" android:text="0"> </TextView> </TableRow> </TableLayout> <LinearLayout android:layout_marginTop="20dp" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:id="@+id/btn1" android:layout_weight="1" android:text="给宝宝购买装备" <!--这里引用Android自带的图片--> android:drawableRight="@android:drawable/ic_menu_add" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout>
2、与之对应的Activity中需要给Button设置一个点击事件,在这里把所有的控件初始化一下
ProgressBar progressBar1; ProgressBar progressBar2; ProgressBar progressBar3; TextView textView2; TextView textView1; TextView textView3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar1 = (ProgressBar) findViewById(R.id.progressBar1); progressBar2 = (ProgressBar) findViewById(R.id.progressBar2); progressBar3 = (ProgressBar) findViewById(R.id.progressBar3); textView1 = (TextView) findViewById(R.id.tv1); textView2 = (TextView) findViewById(R.id.tv2); textView3 = (TextView) findViewById(R.id.tv3); progressBar1.setMax(1000);//进度条最大值 progressBar2.setMax(1000); progressBar3.setMax(1000); Button button1 = (Button) findViewById(R.id.btn1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, ShoppingActivity.class); //需要重写onActivityResult()方法 startActivityForResult(intent, 1); } });
3、创建装备界面activity_shopping,用布局嵌套,嵌套三个相对布局。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin"> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_shopping" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" > <View android:layout_width="30dp" android:layout_height="30dp" android:background="@android:drawable/ic_menu_info_details" android:layout_centerVertical="true" android:layout_alignParentLeft="true" /> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="60dp" android:text="商品名称"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:orientation="vertical"> <TextView android:id="@+id/tv_life" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="13sp" android:text="生命值"/> <TextView android:id="@+id/tv_attack" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="13sp" android:text="攻击力"/> <TextView android:id="@+id/tv_speed" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="13sp" android:text="速度"/> </LinearLayout> </RelativeLayout> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_shopping1" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" > <View android:layout_width="30dp" android:layout_height="30dp" android:background="@android:drawable/ic_menu_info_details" android:layout_centerVertical="true" android:layout_alignParentLeft="true" /> <TextView android:id="@+id/tv_name1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="60dp" android:text="商品名称"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:orientation="vertical"> <TextView android:id="@+id/tv_life1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="13sp" android:text="生命值"/> <TextView android:id="@+id/tv_attack1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="13sp" android:text="攻击力"/> <TextView android:id="@+id/tv_speed1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="13sp" android:text="速度"/> </LinearLayout> </RelativeLayout> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_shopping2" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" > <View android:layout_width="30dp" android:layout_height="30dp" android:background="@android:drawable/ic_menu_info_details" android:layout_centerVertical="true" android:layout_alignParentLeft="true" /> <TextView android:id="@+id/tv_name3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="60dp" android:text="商品名称"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:orientation="vertical"> <TextView android:id="@+id/tv_life3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="13sp" android:text="生命值"/> <TextView android:id="@+id/tv_attack3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="13sp" android:text="攻击力"/> <TextView android:id="@+id/tv_speed3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="13sp" android:text="速度"/> </LinearLayout> </RelativeLayout> </LinearLayout>
4、创建Info实体类,封装装备信息。为了方便数据的传递,在这里让Info类实现Serializable接口。
public class Info implements Serializable { private String name; private int life; private int attack; private int quick; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getQuick() { return quick; } public void setQuick(int quick) { this.quick = quick; } public int getAttack() { return attack; } public void setAttack(int attack) { this.attack = attack; } public int getLife() { return life; } public void setLife(int life) { this.life = life; } public Info(String name, int life, int attack, int quick) { this.name = name; this.life = life; this.attack = attack; this.quick = quick; } }
5、创建ShopActivity
public class ShoppingActivity extends AppCompatActivity { Info info; Info info1; Info info3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_shopping); TextView textView1 =(TextView) findViewById(R.id.tv_name); TextView textView2 =(TextView) findViewById(R.id.tv_life); TextView textView3 =(TextView) findViewById(R.id.tv_attack); TextView textView4 =(TextView) findViewById(R.id.tv_speed); info = new Info("金剑",20,100,20); textView1.setText(info.getName()); textView2.setText("生命值"+ info.getLife()); textView3.setText("攻击力"+ info.getAttack()); textView4.setText("速度"+ info.getQuick()); RelativeLayout relativeLayout =(RelativeLayout) findViewById(R.id.activity_shopping); TextView textView12 =(TextView) findViewById(R.id.tv_name1); TextView textView22 =(TextView) findViewById(R.id.tv_life1); TextView textView32 =(TextView) findViewById(R.id.tv_attack1); TextView textView42 =(TextView) findViewById(R.id.tv_speed1); info1 = new Info("大剑",40,200,20); textView12.setText(info1.getName()); textView22.setText("生命值"+ info1.getLife()); textView32.setText("攻击力"+ info1.getAttack()); textView42.setText("速度"+ info1.getQuick()); RelativeLayout relativeLayout1 =(RelativeLayout) findViewById(R.id.activity_shopping1); TextView textView13 =(TextView) findViewById(R.id.tv_name3); TextView textView23 =(TextView) findViewById(R.id.tv_life3); TextView textView33 =(TextView) findViewById(R.id.tv_attack3); TextView textView43 =(TextView) findViewById(R.id.tv_speed3); info3 = new Info("多兰剑",10,80,10); textView13.setText(info3.getName()); textView23.setText("生命值"+ info3.getLife()); textView33.setText("攻击力"+ info3.getAttack()); textView43.setText("速度"+ info3.getQuick()); RelativeLayout relativeLayout3 =(RelativeLayout) findViewById(R.id.activity_shopping2); relativeLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.putExtra("info", info); //把结果返回给调用者(mainA --onActivityResult()) setResult(10,intent); finish(); } }); relativeLayout1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.putExtra("info1", info1); //把结果返回给调用者(mainA --onActivityResult()) setResult(9,intent); finish(); } }); relativeLayout3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(); intent.putExtra("info3", info3); //把结果返回给调用者(mainA --onActivityResult()) setResult(8,intent); finish(); } }); } }
6、回传数据,编写MainActivity
protected void onActivityResult(int requestCode, int resultCode,Intent data){ if(resultCode==10){ //代表数据来源于数据shop Info info =(Info) data.getExtras().get("info"); updataProgressBar(info); } if(resultCode==9){ Info info =(Info) data.getExtras().get("info1"); updataProgressBar(info); } if(resultCode==8){ Info info =(Info) data.getExtras().get("info3"); updataProgressBar(info);//后面要写这个方法 } super.onActivityResult(requestCode,resultCode,data); }
7、updataProgressBar()方法,更新进度条和后面的数值。
public void updataProgressBar(Info info){ int pb1 = progressBar1.getProgress(); int pb2 = progressBar2.getProgress(); int pb3 =progressBar3.getProgress(); progressBar1.setProgress(pb1+info.getLife()); progressBar2.setProgress(pb2+info.getAttack()); progressBar3.setProgress(pb3+info.getQuick()); textView1.setText(progressBar1.getProgress()+""); textView2.setText(progressBar2.getProgress()+""); textView3.setText(progressBar3.getProgress()+""); }
现在这个小案例就完成了。
相关文章推荐
- Android两个android两个activity之间相互传递数据之装备选择(书上案例)
- Android装备选择案例,演示Activity回传数据
- Activity跳转,数据传递(购买装备案例)
- Activity的数据跳转回传案例——装备选择案例
- Android学习历程--Activity的数据传递(装备选择)
- android中页面跳转以及数据在Activity之间的传递
- Android_06_Activity跳转时,数据的传递及接收
- android数据传递之activity带返回值的跳转,模拟登陆注册
- [Android新手学习笔记05]-如何进行活动Activity之间的跳转以及数据传递
- Android 跳转Activity并通过Bundle对象传递数据
- Android实现intent跳转界面传递数据(2)——onActivityResult方法接收返回值
- Android--Activity会传数据(装备选择)
- Android activity之间的跳转和数据传递
- Android-Activity生命周期-4种启动模式-数据传递-显式隐式跳转
- android的activity跳转传递List类型数据
- Activity回传数据-案例:装备选择
- Android之Activity的生命周期和Activity间的跳转和数据传递
- 记android学习之路----Activity(4)----Activity之间的跳转与数据传递
- Android中Activity界面展示与跳转及数据传递
- Android之Activity的生命周期和Activity间的跳转和数据传递