Android之Bundle,Activity和Intent的使用
来源:互联网 发布:网络填表信息采集 编辑:程序博客网 时间:2024/05/16 01:17
这个实验做的就是在不同的模拟一个简易的网上选购水果的过程,启动应用时状态为: you select nothing,点击”choose fruit” 按钮, 跳转至选择水果的 Activity, 使用 ListView 显示各种水果的图标和名称,点击一栏水果,跳转回原来的 Activity,并改变状态,显示你刚刚点击选择的水果。
首先我们进行前端设计,我们设计的这个要进行界面之间的设计。在layout加了别的界面。加入一个xml,如下所示:
增加一个listview的xml:
增加一个line.xml是一个每一行的定义:
最后是主界面:
这就是前端布局,已经结束了。接下来就是后端:
我们在SRC里增加一个activity,Fruit:
代码如下:
package com.example.ex4;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.ListView;import android.widget.SimpleAdapter;public class Fruit extends Activity {ListView list;private List<Map<String, Object>> mDataList = new ArrayList<Map<String, Object>>();private void setData(){Map<String,Object> map = new HashMap<String,Object>();map.put("name", "Apple");map.put("image", R.drawable.apple);mDataList.add(map);map = new HashMap<String,Object>();map.put("name", "Banana");map.put("image", R.drawable.banana);mDataList.add(map);map = new HashMap<String,Object>();map.put("name", "Cherry");map.put("image", R.drawable.cherry);mDataList.add(map);map = new HashMap<String,Object>();map.put("name", "Coco");map.put("image", R.drawable.coco);mDataList.add(map);map = new HashMap<String,Object>();map.put("name", "Kiwi");map.put("image", R.drawable.kiwi);mDataList.add(map);map = new HashMap<String,Object>();map.put("name", "Orange");map.put("image", R.drawable.orange);mDataList.add(map);map = new HashMap<String,Object>();map.put("name", "Pear");map.put("image", R.drawable.pear);mDataList.add(map);map = new HashMap<String,Object>();map.put("name", "Strawberry");map.put("image", R.drawable.strawberry);mDataList.add(map);map = new HashMap<String,Object>();map.put("name", "Watermelon");map.put("image", R.drawable.watermelon);mDataList.add(map);}//TextView ;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.fruit);setData();SimpleAdapter listItemAdapter = new SimpleAdapter(this,mDataList,R.layout.line,new String[]{"name","image"},new int[]{R.id.textView1,R.id.imageView1} );list = (ListView)findViewById(R.id.listView1);list.setAdapter(listItemAdapter);list.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stubsetData();Bundle bundle=new Bundle();bundle.putString("name",mDataList.get(position).get("name").toString());Intent intent =new Intent(Fruit.this,MainActivity.class);intent.putExtras(bundle);setResult(android.app.Activity.RESULT_OK,intent);finish();}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}
里面的setData函数就是建立映射,把水果的名字和图片进行了映射。执行OnCreate()之后首先执行这个,然后生成List中数据的适配器listItemAdapter。
SimpleAdapter listItemAdapter = new SimpleAdapter(this,mDataList,R.layout.line,new String[]{"name","image"},new int[]{R.id.textView1,R.id.imageView1} );
再设置ListView的适配器。
list = (ListView)findViewById(R.id.listView1);list.setAdapter(listItemAdapter);接着设置ListView中item的点击事件处理。这里使用了Bundle,是将button按住的“name”存入bundle,再启动intent事件,并把结果使用setResult()返回。
list.setOnItemClickListener(new OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {// TODO Auto-generated method stubsetData();Bundle bundle=new Bundle();bundle.putString("name",mDataList.get(position).get("name").toString());Intent intent =new Intent(Fruit.this,MainActivity.class);intent.putExtras(bundle);setResult(android.app.Activity.RESULT_OK,intent);finish();}});还有需要注意的就是要把这个Activity加入到Android.Mainfest.xml里面。
在MainActivity加入Button事件触发进入Fruit.Activity。还有就是要接收intent发来的信息。
总的Activity如下:
package com.example.ex4;import android.support.v7.app.ActionBarActivity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends ActionBarActivity {Button choose_fruit;TextView t;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);t = (TextView) findViewById(R.id.textView1);choose_fruit = (Button) findViewById(R.id.button1);choose_fruit.setOnClickListener(new OnClickListener() {public void onClick(View V) {// 跳转到activity fruit中并要求将信息回传Intent intent = new Intent(MainActivity.this, Fruit.class);startActivityForResult(intent, 123);}});}public void onActivityResult(int requestCode, int resultCode, Intent idata) {if (requestCode == 123) {if (resultCode == Activity.RESULT_OK) {String name = idata.getExtras().getString("name");t.setText(name);}}}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// Handle action bar item clicks here. The action bar will// automatically handle clicks on the Home/Up button, so long// as you specify a parent activity in AndroidManifest.xml.int id = item.getItemId();if (id == R.id.action_settings) {return true;}return super.onOptionsItemSelected(item);}}以下就是接收消息,requestCode要为123。
public void onActivityResult(int requestCode, int resultCode, Intent idata) {if (requestCode == 123) {if (resultCode == Activity.RESULT_OK) {String name = idata.getExtras().getString("name");t.setText(name);}}}
以下就是Button触发之后的事件响应。
choose_fruit.setOnClickListener(new OnClickListener() {public void onClick(View V) {// 跳转到activity fruit中并要求将信息回传Intent intent = new Intent(MainActivity.this, Fruit.class);startActivityForResult(intent, 123);}});
选择界面:
点击choose fruit:
点击StrawBery:
0 0
- Android之Bundle,Activity和Intent的使用
- Android之Activity之间的数据传递-intent-bundle
- Activity之间使用Intent和Bundle传值的区别
- 在Activity之间使用Intent传值和Bundle传值的区别和方式
- android Activity之间通过Bundle和Intent传递数据
- Android中Activity之间的数据传递(Intent和Bundle)
- Android: Intent和Bundle的区别
- Android-Bundle认知、和Intent的区别
- 使用Intent和Bundle的数据传递
- Android之Intent和Activity
- Android之Activity和Intent
- Activity之间的数据交换Intent和Bundle区别
- Activity间用Intent和Bundle传递参数
- Activity间用Intent和Bundle传递参数
- Activity间用Intent和Bundle传递参数
- Activity间用Intent和Bundle传递参数
- android学习笔记(一)activity的基本用法和创建,bundle如何传递数据,intent的用法
- Android中Activity之间的数据传递和Intent使用
- 【二】MFC对话框的等比例缩放
- 黑马程序员_Java基础_面向对象
- hdu 卡片游戏
- SICP 习题解 1.8 1.11
- Cocos2d-x 3.2 大富翁游戏项目开发-第二部分片头动画
- Android之Bundle,Activity和Intent的使用
- 黑马程序员_Java基础_数组
- 装饰模式和代理模式的区别
- 第一天随记
- 主客体二元组是个十分靠近世界的本质的数据结构
- 多队列网卡简介
- 【cocos2d-js官方文档】十一、cc.path
- JDBC元数据操作(一)-- DatabaseMetaData接口详解
- Variable Assembly Language可变汇编语言