android之bundle是什么_什么是bundle
Bundle,是Android开发中的一个类,用于Activity之间传输数据用。
- Intent it = new Intent(A.this,B.class);
- Bundle bundle = new Bundle();
- bundle.putString("name","张三");
- it.putExtrats(bundle);
- startActivity(it);
这样就把name为张三这个数据从A传到了B.
===================================================================
android之按钮单击事件及监听器的实现方式
第一种,匿名内部类作为事件监听类.
- <span style="font-size:14px;"> Button button = (Button) findViewById(R.id.button);
- button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- System.out.println("匿名内部类作为事件监听器");
- }
- });</span>
对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握,如果读者java基础扎实,匿名内部类的语法掌握较好,通常建议使用匿名内部类作为监听器。
第二种:内部类作为监听器
将事件监听器类定义成当前类的内部类。1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类的内部类,2、所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。上面代码就是内部类的形式!!
第三种:Activity本身作为事件监听器
上面的程序让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。
第四种:外部类作为监听器
ButtonTest类
当用户单击button按钮时,程序将会触发MyButtonListener监听器
外部MyButtonListener类
第五种:直接绑定到标签
Android还有一种更简单的绑定事件监听器的的方式,直接在界面布局文件中为指定标签绑定事件处理方法。
对于很多Android标签而言,它们都支持如onClick、onLongClick等属性,这种属性的属性值就是一个形如xxx
(View source)
的方法的方法名。在布局文件中为button添加属性,如一代码:
为Button按钮绑定一个事件处理方法:clickHanlder,这意味着开发者需要在该界面布局对应的Activity中定义一个void clickHanler(View source)方法,该方法将会负责处理该按钮上的单击事件。
下面是该界面布局对应的java代码:
=====================================================
android之activity的生命周期详解
刚在看mars老师的视频,看到activity的生命周期,就看了一下,总结了一下.下面是各函数的调用时机
为了更清楚的看清楚工作的具体过程,举例如下:
,建立两个activity,一个main,一个another,在main里面放置button加监听器跳转向another,在每个复写的activity的状态方法里都加一个log输出,比如onCreate里面输出main:onCreate;
从启动到点击按钮,再从another按返回键返回main,输出如下:
启动:
main:onCreate
main:onStart
main:onResume
点击button启动another
main:onPause
another:onCreate
another:onStart
another:onResume
main:onStop
点击返回
another:onPause
main:onRestart
main:onStart
main:onResume
another:onStop
another:onDestory
下面是各个状态时候的特点
========================================================
android之SharedPreferences简介
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长整形、Int整形、String字符串型的保存.
用法
在A中设置
- Editor editor = getSharedPreferences("data", 0).edit();
- editor.putString("item","hello getSharedPreferences");
- editor.commit();
B中获取
- SharedPreferences sharedata = getSharedPreferences("data", 0);
- String item = sharedata.getString("item", null);
- Log.v("cola","data="+data);
在Android系统中,这些信息以XML文件的形式保存在 /data/data/PACKAGE_NAME/shared_prefs 目录下。
使用步骤:
1、得到SharedPreferences对象
2、调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。
3、向SharedPreferences.Editor对象中添加数据。
4、调用commit方法将添加的数据提交。
详细过程:
1、得到SharedPreferences对象
方法1:
Context.getSharedPreferences(文件名称,操作模式)
文件名称不存在就会创建一个,操作模式有两种:
MODE_PRIVATE:默认操作模式,直接在把第二个参数写0就是默认使用这种操作模式,这种模式表示只有当前的应用程序才可以对当前这个SharedPreferences文件进行读写。 共享的范围据现在同一个Package包中
MODE_MULTI_PRIVATE:用于多个进程共同操作一个SharedPreferences文件。
注:MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE这两种模式已经在android 4.2版本以后废弃了。
方法2:
Activity.getPreferences(操作模式)
使用这个方法会自动将当前活动的类名作为SharedPreferences的文件名,底层调用的是下面这个方法
Activity.getSharedPreferences(String name, int mode)我们也可以直接调用getSharedPreferences这个方法,传入自定义的名字。
方法3
PreferenceManager.getDefaultSharedPreferences(Context)
使用这个方法会自动使用当前程序的包名作为前缀来命名SharedPreferences文件
2、调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象。
SharedPreferences.Editor editor = getSharedPreferences(“data”,MODE_PRIVATE).edit();
3、向SharedPreferences.Editor对象中添加数据。
editor.putString(“name”,”Lily”); //以键值对形式存储
editor.putInt(“age”,”20”); //以键值对形式存储
editor.putBoolean(“married”,false); //以键值对形式存储
4、调用commit方法将添加的数据提交。
editor.commit();
代码示例:
SharedPreferences pref = MainActivity.this.getSharedPreferences(“data”,MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString(“name”,”lily”);
editor.putString(“age”,”20”);
editor.putBoolean(“married”,false);
editor.commit();
如果要读取数据:
SharedPreferences pref = getSharedPreferences(“data”,MODE_PRIVATE);
String name = pref.getString(“name”,”“);//第二个参数为默认值
int age = pref.getInt(“age”,0);//第二个参数为默认值
boolean married = pref.getBoolean(“married”,false);//第二个参数为默认值
android之LayoutInflater详解_什么是LayoutInflater
对于常见的一个已经载入的Activity, 我们可以使用findViewById方法来获得其中的界面元素. 而对于一个没有被载入或者想要动态载入的界面, 就需要使用inflate来载入了.
方法:
Android里面想要创建一个画面的时候, 初学一般都是新建一个类, 继承Activity基类, 然后在onCreate里面使用setContentView方法来载入一个在xml里定义好的界面.
其实在Activity里面也可以使用LayoutInflater来载入界面, 通过getSystemService(Context.LAYOUT_INFLATER_SERVICE)方法可以获得一个 LayoutInflater, 也可以通过LayoutInflater inflater = getLayoutInflater();来获得.然后使用inflate方法来载入layout的xml,
============================================================
android之View和ViewGroup介绍
View是所有UI组件的基类,而 ViewGroup是容纳这些组件的容器,其本身也是从View派生出来的.
View类是它称为“widgets(工具)”的子类的基础,它们提供了诸如文本输入框和按钮之类的UI对象的完整实现。
ViewGroup类同样为其被称为“Layouts(布局)”的子类奠定了基础,它们提供了象流式布局、表格布局以及相对布局之类的布局架构。
一般来说,开发Android应用程序的UI界面都不会直接使用View和ViewGroup,而是使用这两大基类的派生类。
View派生出的直接子类有:AnalogClock,ImageView,KeyboardView, ProgressBar,SurfaceView, TextView,ViewGroup,ViewStub
View派生出的间接子类有:AbsListView,AbsSeekBar, AbsSpinner, AbsoluteLayout, AdapterView,AdapterViewAnimator, AdapterViewFlipper, AppWidgetHostView, AutoCompleteTextView,Button,CalendarView, CheckBox, CheckedTextView, Chronometer, CompoundButton,
ViewGroup派生出的直接子类有:AbsoluteLayout,AdapterView,FragmentBreadCrumbs,FrameLayout, LinearLayout,RelativeLayout,SlidingDrawer
ViewGroup派生出的间接子类有:AbsListView,AbsSpinner, AdapterViewAnimator, AdapterViewFlipper, AppWidgetHostView, CalendarView, DatePicker, DialerFilter, ExpandableListView, Gallery, GestureOverlayView,GridView,HorizontalScrollView, ImageSwitcher,ListView,
这里特别指出,ImageView是布局具有图片效果的UI常用的类,SurfaceView是用来进行游戏开发的与一般View相比较为特殊的非常重要的类,而AbsoluteLayout、 FrameLayout,LinearLayout, RelativeLayout这几个ViewGroup的直接子类是Android UI布局中最基本的布局元素。
=======================================================================
context和getApplicationContext()介绍
getApplicationContext() 返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁。
Activity.this 就是context的一个具体 ,返回当前activity的上下文,生命周期只是它所在的Activity,activity 摧毁他就摧毁
====================================================================================
pendingIntent 和 Notification
pendingIntent字面意义:等待的,未决定的Intent。
要得到一个pendingIntent对象,使用方法类的静态方法
通过getActivity(Context context, int requestCode, Intent intent, int flags)从系统取得一个用于启动一个Activity的PendingIntent对象,
通过getService(Context context, int requestCode, Intent intent, int flags)从系统取得一个启动Service的PendingIntent对象
通过getBroadcast(Context context, int requestCode, Intent intent, int flags)从系统取得一个用于向BroadcastReceiver发送广播
参数有4个,比较重要的是第三个和第一个,其次是第四个和第二个。可以看到,要得到这个对象,必须传入一个Intent作为参数,必须有context作为参数。
pendingIntent是一种特殊的Intent。主要的区别在于Intent的执行立刻的,而pendingIntent的执行不是立刻的。
pendingIntent执行的操作实质上是参数传进来的Intent的操作,但是使用pendingIntent的目的在于它所包含的Intent的操作的执行是需要满足某些条件的。
PendingIntent 可以看作是对 Intent 的包装。 PendingIntent 主要持有的信息是它所包装的 Intent 和当前Application 的 Context 。正由于 PendingIntent 中保存有当前 Application 的 Context ,使它赋予带他程序一种执行的 Intent 的能力,就算在执行时当前 Application 已经不存在了,也能通过存在 PendingIntent里的 Context 照样执行 Intent 。
主要的使用的地方和例子:通知Notificatio的发送,短消息SmsManager的发送 和 警报器AlarmManager的执行等等。
Android的状态栏通知(Notification)
如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息。
步骤:
1 获取通知管理器NotificationManager,它也是一个系统服务
2 建立通知Notification notification = new Notification(icon, null, when);
3 为新通知设置参数(比如声音,震动,灯光闪烁)
4 把新通知添加到通知管理器
发送消息的代码如下:
- //获取通知管理器
- NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)
- int icon = android.R.drawable.stat_notify_chat;
- long when = System.currentTimeMillis();//通知发生的时间为系统当前时间
- //新建一个通知,指定其图标和标题
- Notification notification = new Notification(icon, null, when);//第一个参数为图标,第二个参数为短暂提示标题,第三个为通知时间
- notification.defaults = Notification.DEFAULT_SOUND;//发出默认声音
- notification.flags = Notification.FLAG_AUTO_CANCEL;//点击通知后自动清除通知
- Intent openintent = new Intent(this, OtherActivity.class);
- PendingIntent contentIntent = PendingIntent.getActivity(this, 0, openintent, 0);//当点击消息时就会向系统发送openintent意图
- notification.setLatestEventInfo(this, “标题”, “我是内容", contentIntent);
- mNotificationManager.notify(0, notification);//第一个参数为自定义的通知唯一标识
重点是setLatestEventInfo( )方法的最后一个参数,它是一个PendingIntent,
===============================================================
Android Fragment用法之给Activity创建事件回调
在某些案例中,可能需要Fragment与Activity共享事件。在Fragment内部定义一个回调接口是一个好方法,并且规定由持有它的Activity实现这个回调方法。当Activity通过接口接受回调时,它能在必要时与布局中的其他Fragment共享信息。例如,如果一个音乐播放器的应用程序在一个Activity中有两个Fragment---一个用来显示歌曲列表(Fragment A),另一个用来显示歌曲信息(Fragment B),然后在列表项目被选中时Fragment A必须告诉Activity,以便它能告诉Fragment B显示对应的歌曲信息。在下面的例子中在Fragment A的内部声明了onMp3ChangedListener接口。
- public static class FragmentA extends ListFragment {
- ...
- //持有它的Activity必须实现这个回调方法
- public interface onMp3ChangedListener{
- public void onMp3Changed(int index);//index表示的是歌曲在列表中的序号
- }
- ...
- }
然后,持有这个Fragment的Activity要实现onMp3ChangedListener接口,并且要重写onMp3Changed()方法把来自Fragment A的事件通知给Fragment B。要确保持有Fragment的Activity实现这个接口, Fragment A 的onAttach()回调方法(当Fragment被添加到Activity时系统调用这个方法)通过类型转换onAttach()传入的Activity来实例化一个onMp3ChangedListener的实例。
- public static class FragmentA extends ListFragment {
- onMp3ChangedListener mListener;
- ...
- @Override
- public void onAttach(Activity activity) {
- super.onAttach(activity);
- try {
- mListener = (onMp3ChangedListener) activity;
- } catch (ClassCastException e) {
- throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener"); }
- ...
- }
如果这个Activity没有实现这个接口,那么Fragment会抛出ClassCastException异常。
如果成功,那么mListener成员就会拥有Activity实现的onMp3ChangedListener对象的引用,以便Fragment A能够通过onMp3ChangedListener接口定义的回调方法和Activity共享事件。例如,Fragment A继承了ListFragment,那么用户每次点击列表项时,系统都会调用Fragment中的onListItemClick()方法,然后调用onMp3Changed()方法和Activity共享事件:
- public static class FragmentA extends ListFragment {
- OnArticleSelectedListener mListener;
- ...
- @Override
- public void onListItemClick(ListView l, View v, int position, long id) {
- mListener.onMp3Changed(position);
- }
- ...
- }
传递给onListItemClick()的position参数是被点击项目的行ID,Activity(或其他的Fragment)使用这个ID从歌曲列表中获取对应的歌曲信息。
======================================================================
14个简单有用的android源码,适合初学者
1:查看是否有存储卡插入
- String status=Environment.getExternalStorageState();
- if(status.equals(Enviroment.MEDIA_MOUNTED))
- {
- ;//说明有SD卡插入
- }
2:让某个Activity透明
在OnCreate 中不设Layout,然后this.setTheme(R.style.Theme_Transparent);
3:获取屏幕宽高
- DisplayMetrics dm = new DisplayMetrics();
- //获取窗口属性
- getWindowManager().getDefaultDisplay().getMetrics(dm);
- int screenWidth = dm.widthPixels;
- int screenHeight = dm.heightPixels;
4:发送短信
- String body=”this is mms demo”;
- Intent mmsIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(”smsto”, number, null));
- mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);
- mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, true);
- mmsIntent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, true);
- startActivity(mmsIntent);
5:发送彩信
- StringBuilder sb = new StringBuilder();
- sb.append(”file://”);
- sb.append(fd.getAbsoluteFile());
- Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(”mmsto”, number, null));
- // Below extra datas are all optional.
- intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_SUBJECT, subject);
- intent.putExtra(Messaging.KEY_ACTION_SENDTO_MESSAGE_BODY, body);
- intent.putExtra(Messaging.KEY_ACTION_SENDTO_CONTENT_URI, sb.toString());
- intent.putExtra(Messaging.KEY_ACTION_SENDTO_COMPOSE_MODE, composeMode);
- intent.putExtra(Messaging.KEY_ACTION_SENDTO_EXIT_ON_SENT, exitOnSent);
- startActivity(intent);
7:发送Mail
- mime = “img/jpg”;
- shareIntent.setDataAndType(Uri.fromFile(fd), mime);
- shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(fd));
- shareIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
- shareIntent.putExtra(Intent.EXTRA_TEXT, body);
8:注册一个 BroadcastReceiver
- registerReceiver(mMasterResetReciever, new IntentFilter(”oms.action.MASTERRESET”));
- private BroadcastReceiver mMasterResetReciever = new BroadcastReceiver() {
- public void onReceive(Context context, Intent intent){
- String action = intent.getAction();
- if(”oms.action.MASTERRESET”.equals(action)){
- RecoverDefaultConfig();
- }
- }
- };
9:定义ContentObserver,监听某个数据表
- private ContentObserver mDownloadsObserver = new DownloadsChangeObserver(Downloads.CONTENT_URI);
- private class DownloadsChangeObserver extends ContentObserver {
- public DownloadsChangeObserver(Uri uri) {
- super(new Handler());
- }
- @Override
- public void onChange(boolean selfChange) {}
- }
10:获得 手机UA
- public String getUserAgent() {
- String user_agent = ProductProperties.get(ProductProperties.USER_AGENT_KEY, null);
- return user_agent;
- }
11:清空手机上Cookie
- CookieSyncManager.createInstance(getApplicationContext());
- CookieManager.getInstance().removeAllCookie();
12:建立GPRS 连接
- private boolean openDataConnection() {
- DataConnection conn = DataConnection.getInstance();
- if (connectMode == 0) {
- ret = conn.openConnection(mContext, “cmwap”, “cmwap”, “cmwap”);
- } else {
- ret = conn.openConnection(mContext, “cmnet”, “”, “”);
- }
- }
13:PreferenceActivity 用法
- public class Setting extends PreferenceActivity{
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.settings);
- }
- }
Setting.xml:
- android:key=”seting2″
- android:title=”@string/seting2″
- android:summary=”@string/seting2″/>
- android:key=”seting1″
- android:title=”@string/seting1″
- android:summaryOff=”@string/seting1summaryOff”
- android:summaryOn=”@stringseting1summaryOff”/>
14:通过 HttpClient从指定server获取数据
- DefaultHttpClient httpClient = new DefaultHttpClient();
- HttpGet method = new HttpGet(“http://www.baidu.com/1.html”);
- HttpResponse resp;
- Reader reader = null;
- try {
- // AllClientPNames.TIMEOUT
- HttpParams params = new BasicHttpParams();
- params.setIntParameter(AllClientPNames.CONNECTION_TIMEOUT, 10000);
- httpClient.setParams(params);
- resp = httpClient.execute(method);
- int status = resp.getStatusLine().getStatusCode();
- if (status != HttpStatus.SC_OK)
- return false;
- // HttpStatus.SC_OK;
- return true;
- } catch (ClientProtocolException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block e.printStackTrace();
- } finally {
- if (reader != null)
- try {
- reader.close();
- } catch (IOException e) {
- // TODO Auto-generated
- catch block e.printStackTrace();
- }
- }
14个简单有用的android源码,适合初学者
一.android:singleLine
设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如
- android:text="test_ singleLine "
- android:singleLine="true"
- android:layout_width="20dp"
将只显示"t..."
如果不设置singleLine或者设置为false,文本将自动换行
二.android:cacheColorHint="@null"
cacheColorHint属性,很多人希望能够改变一下ListView的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性
- android:background="@drawable/bg"
不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果。
如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那只要将android:cacheColorHint指定为透明(#00000000)就可以了
三.android:fadingEdge="@null"
上边和下边有黑色的阴影,
- android:fadingEdge="none"
设置后没有阴影了
四.android:divider="@null"
该属性作用是每一项之间需要设置一个图片做为间隔,或是去掉item之间的分割线
- android:divider="@drawable/list_driver"
其中 @drawable/list_driver 是一个图片资源,如果不想显示分割线则只要设置
- 为android:divider="@drawable/@null"
就可以了
- android:listSelector="#00000000"
- android:transcriptMode="alwaysScroll" <span> </span>
作用是隐藏listView的滚动条,
- android:scrollbars="none"
与
- setVerticalScrollBarEnabled(true);
的效果是一样的,不活动的时候隐藏,活动的时候也隐藏
- android:fastScrollEnabled="true"
- myListView.setFastScrollEnabled(true);
- android:drawSelectorOnTop="true"
- android:drawSelectorOnTop="false"
点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的
android之startActivityForResult的使用
在Android中startActivityForResult主要作用就是:
A-Activity需要在B-Activtiy中执行一些数据操作,而B-Activity又要将,执行操作数据的结果返回给A-Activtiy
//看效果
//看代码
- package jason.actres;
- 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 ActivityResultDemoActivity extends Activity
- {
- private Button button_start_task;
- private TextView TextView_result;
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- button_start_task=(Button) findViewById(R.id.button_start_task);
- TextView_result=(TextView) findViewById(R.id.TextView_result);
- button_start_task.setOnClickListener(new button_start_task_Listener());
- }
- private class button_start_task_Listener implements OnClickListener
- {
- public void onClick(View v)
- {
- Intent intent=new Intent(ActivityResultDemoActivity.this,SimpleTaskActivity.class);
- //关键点来了,使用startActivityForResult来启动
- startActivityForResult(intent, 100);
- }
- }
- /**
- * 复写onActivityResult,这个方法
- * 是要等到SimpleTaskActivity点了提交过后才会执行的
- */
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data)
- {
- //可以根据多个请求代码来作相应的操作
- if(20==resultCode)
- {
- String bookname=data.getExtras().getString("bookname");
- String booksale=data.getExtras().getString("booksale");
- TextView_result.setText("书籍名称:"+bookname+"书籍价钱"+booksale+"元");
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
- }
//任务处理类
- package jason.actres;
- 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.EditText;
- public class SimpleTaskActivity extends Activity
- {
- private EditText EditText_bookname;
- private EditText EditText_booksale;
- private Button Button_task_fulfill;
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main2);
- EditText_bookname=(EditText) findViewById(R.id.EditText_bookname);
- EditText_booksale=(EditText) findViewById(R.id.EditText_booksale);
- Button_task_fulfill=(Button) findViewById(R.id.Button_task_fulfill);
- Button_task_fulfill.setOnClickListener(new Button_task_fulfill_Listener());
- }
- private class Button_task_fulfill_Listener implements OnClickListener
- {
- public void onClick(View v)
- {
- String str_bookname=EditText_bookname.getText().toString();
- String str_booksale=EditText_booksale.getText().toString();
- //判断空,我就不判断了。。。。
- Intent data=new Intent();
- data.putExtra("bookname", str_bookname);
- data.putExtra("booksale", str_booksale);
- //请求代码可以自己设置,这里设置成20
- setResult(20, data);
- //关闭掉这个Activity
- finish();
- }
- }
- }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////