Activity间传递Bitmap,startActivityForResult的用法

来源:互联网 发布:东海舰队 知乎 编辑:程序博客网 时间:2024/06/07 16:37

分类: Android 1880人阅读 评论(1) 收藏 举报
dialogandroidapplicationstring输入法笑话

之前那个手势输入法的程序,想添加个类似dialog的功能(当时还不知道dialog...只知道用activity仿dialog-_-)

 

 

 

需要在Activity之间传递Bitmap.之前在网上查到可以写一个类,把消息作为类的数据成员来传递。

可是实现之后报错,再google,才知道Bitmap是无法用序列化的方法传递的,用其他方法

其中一种就是作为全局变量传递。

 

首先写一个类:

[java] view plaincopy
  1. package com.uyu.gesturepro;  
  2. import  android.app.Application;  
  3. import  android.graphics.Bitmap;  
  4. public  class  InfoClass  extends  Application{  
  5.      private Bitmap bmp;  
  6.      private String name;  
  7.        
  8.      public String getName(){  
  9.          return name;  
  10.      }  
  11.        
  12.      public void setName(String name){  
  13.          this.name = name;  
  14.      }  
  15.        
  16.      public Bitmap getBmp(){  
  17.          return bmp;  
  18.      }  
  19.      public void setBmp(Bitmap bmp){  
  20.          this.bmp = bmp;  
  21.     }  
  22. }  

 

然后再Activitymanifest.xml中注册一下

<application android:name =".InfoClass" android:icon="@drawable/icon" android:label="@string/app_name">

注意 这里不是重新写一条<application/>,而是在原有的里面加上 android:name =".InfoClass"

 

接下来是使用

赋值:

[java] view plaincopy
  1. InfoClass info = (InfoClass)getApplication();  
  2.                             info.setBmp(bmp);  
  3.                             info.setName(et.getText().toString());  

 

使用:

[java] view plaincopy
  1. InfoClass info = (InfoClass)getApplication();  
  2. tv.setText("手势ID为:"+info.getName());  
  3. iv.setImageBitmap(info.getBmp());  

 

 

OK,Bitmap变量传递过去了,其实这就是一种全局变量的用法,据说比public Static有更好的安全性,呵呵

 

 

startActivityForResult的用法

在main_Activity中:注意我这里只需要sub_Activity传回ok or cancel的消息就可以了

所以并没有用intent传值过去,也没有传确切的值回到main,但是如果需要是可以互相传递值的

具体用法就不写了,有需要去网上搜索相应的帖子吧

 

[java] view plaincopy
  1. Intent intent = new Intent();  
  2. intent.setClass(gesturepro.this, gestureView.class);  
  3. gesturepro.this.startActivityForResult(intent, 0);  

在sub_Activitiy中:

 

 

[java] view plaincopy
  1. Intent data = new Intent();  
  2. setResult(RESULT_OK, data);  
  3. finish();  

 

值传回来以后,在onActivityResult()方法中处理,根据传回来的resultCode来选择相应的处理

[java] view plaincopy
  1. protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  2.         // TODO Auto-generated method stub  
  3.         Log.d("uyu","return");  
  4.           
  5.         switch(resultCode){  
  6.             case RESULT_OK:  
  7.                 addMyGesture(et.getText().toString(), gesture);  
  8.                 break;  
  9.             case RESULT_CANCELED:  
  10.                 tv.setText("重新输入手势:");  
  11.                 gov.clear(true);  
  12.                 break;  
  13.             default:  
  14.                 break;  
  15.         }  
  16.           
  17.     }  

 

 

其实使用dialog完全可以完成同样的功能。。我也是做完以后才知道的

一直没学过dialog的用法-_- 又闹笑话了

不过也通过弯路学到了东西,无所谓啦

0 0
原创粉丝点击