`
baoweiwei
  • 浏览: 126497 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android参数传递总结

阅读更多
Android由众多Activity组成,每个Activity对应不同的功能和UI,但是每个Activity都是一个单独的类,所以需要传递参数。一般来讲,Android中传递参数是在不同的Activity中。大致上有5类方案:
1 静态 static
定义方法:
public class MainActivity extends TabActivity {
        public static DatabaseHelper mHelper;
	public static  SQLiteDatabase db;
}


使用方法:
public	class QQList extends Activity{
        try{
         	db=MainActivity.db;
 			
 	}catch(Exception e){
 		e.printStackTrace();
 	}
}



2 单例 Singleton
定义方法:
public class SingleSocket {
/*
 * GG单例模式的第四个版本,既解决了“懒汉式的”多线程问题,又解决了资源浪费的现象,看上去是一种不错的选择
*/
	    //Socket成员
		private Socket socket=null;
	    //对单例本身引用的名称
	    private static SingleSocket sSocket;
	    public Socket getSocket() {
	        return socket;
	    }
	    public void initSocket(String ip,int port ) {
	        try{
	        		socket=new Socket(ip,port);
	        }catch(Exception e){
	        	e.printStackTrace();
	        }
	    }
	    //构造函数私有化
	    private SingleSocket() {
	    } 
	    //提供一个全局的静态方法
	    public static SingleSocket getSingle() {
	        if(sSocket == null) {
	            synchronized (SingleSocket.class) {
	                if(sSocket == null) {
	                    sSocket = new SingleSocket();
	                }
	            }
	        }
	        return sSocket;
	    }
}


使用方法:
public class MainActivity extends TabActivity {
        private SingleSocket olsocket=SingleSocket.getSingle();
        private  Socket socket=null;
}


3 通过Intent传递
Intent是Android的类,含有传递参数的方法,类似于jsp中的get,但可传的参数类型支持很少。
定义方法:
public class ClientActivity extends Activity {  		  
	Intent intent = new Intent();		
	Bundle bundle = new Bundle();  
	bundle.putString("Usr", Usr); 
	bundle.putString("Psd", Psd); 
	intent.putExtras(bundle); 
	intent.setClass(ClientActivity.this, MainActivity.class);
}

使用方法:
Bundle bundle = getIntent().getExtras();
Usr = bundle.getString("Usr");
Psd=bundle.getString("Psd");


4 Socket传递
这个无需多说,创建Socket和ServerSocket对,进行通信。

5 SQLite数据库
创建数据库方法:
package com.android.client;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteDatabase.CursorFactory;

public	class	DatabaseHelper	extends	SQLiteOpenHelper{
	/*public static final String TB_XINLANGWEIBO="XINLANGWEIBO";
	public static final String TB_QQGROUP="QQGROUP";
	public static final String TB_WEB="WEB";
	public static final String TB_QQLIST="QQLIST";
	public static final String TB_CLIENTPUB="CLIENTPUB";

	public static final String XINLANGWEIBO_ID="_id";
	public static final String QQGROUP_ID="_id";
	public static final String WEB_ID="_id";
	public static final String CLIENTPUB_ID="_id";

	public static final String QQLIST_ID="_id";
	public static final String QQLIST_NICK="NICK";*/
	public static final String TB_BUSINESS="BUSINESS";
	
	public static final String ID="_id"; 
	public static final String CLASS="CLASS";
	public static final String CONTENT="CONTENT";
	public static final String FROM="FRM";
	public static final String WHO="WHO";
	
	
	public DatabaseHelper(Context context,String name,CursorFactory factory,int version){
		super(context,name,factory,version);
	}
	
	@Override
	public void onCreate(SQLiteDatabase arg0){
		//arg0.execSQL("CREATE TABLE IF NOT EXISTS "+TB_XINLANGWEIBO+"(_id INTEGER PRIMARY KEY AUTOINCREMENT,CONTENT TEXT);");
		//arg0.execSQL("CREATE TABLE IF NOT EXISTS "+TB_QQGROUP+"(_id INTEGER PRIMARY KEY AUTOINCREMENT,CONTENT TEXT);");
		//arg0.execSQL("CREATE TABLE IF NOT EXISTS "+TB_WEB+"(_id INTEGER PRIMARY KEY AUTOINCREMENT,CONTENT TEXT);");
		
		//arg0.execSQL("CREATE TABLE IF NOT EXISTS "+TB_QQLIST+"(_id TEXT PRIMARY KEY,NICK TEXT);");
		//arg0.execSQL("CREATE TABLE IF NOT EXISTS "+TB_CLIENTPUB+"(_id INTEGER PRIMARY KEY AUTOINCREMENT,CONTENT TEXT);");
		arg0.execSQL("CREATE TABLE IF NOT EXISTS "+TB_BUSINESS+"(_id INTEGER PRIMARY KEY AUTOINCREMENT,CLASS TEXT,CONTENT TEXT,FRM TEXT,WHO TEXT);");

		
	}
	@Override
	public void onUpgrade(SQLiteDatabase db,int oldVertion,int newVersion){
		//db.execSQL("DROP TABLE IF EXISTS"+TB_XINLANGWEIBO);
		//db.execSQL("DROP TABLE IF EXISTS"+TB_QQGROUP);
		//db.execSQL("DROP TABLE IF EXISTS"+TB_WEB);
		//db.execSQL("DROP TABLE IF EXISTS"+TB_QQLIST);
		onCreate(db);
		
	}
}


调用之:
      try{
        
        //创建数据库(如果数据库文件已经存在就不会再创建)
        mHelper = new DatabaseHelper(this,DB_NAME,null,VERSION);
	db=mHelper.getWritableDatabase();
       }catch (Exception ee){
       	AlertDialog dlg1=new AlertDialog.Builder(this)  
            .setMessage(ee.getMessage())  
            .setPositiveButton("Ok", null)  
            .show();
        }

使用方法,其实就是查询数据库:
try{
    cursor=db.query(TB_NAME, new String []{"_id","NICK"},null, null, null, null,null);
}catch(Exception ee){
    ee.printStackTrace();
    AlertDialog dlg=new AlertDialog.Builder(QQList.this)  
                .setMessage("没找到表")  
                .setPositiveButton("Ok", null)  
                .show();
}

当然类似于数据库的传递方案还有很多,最常见的就是使用xml文件,但是思路一样,以上便是针对Android参数传递的一点总结。
分享到:
评论

相关推荐

    Android原生java语句 和html js互相调用 传递参数

    本教程将详细介绍如何在Android中通过Java语句与HTML中的JavaScript进行互调,并传递参数。 首先,我们需要在Android项目中引入`WebView`组件。在XML布局文件中添加一个`WebView`: ```xml android:id="@+id/...

    Android调用webservice进行实体对象的传递Json

    你可以直接将这些值作为参数传递给WebService,同时也可以作为返回值接收。例如,如果你有一个获取用户ID的WebService方法,可以这样在Android端调用: ```java // 创建SoapObject并设置参数 SoapObject request = ...

    JNI 参数传递 Android 自定义对象

    总结,JNI参数传递涉及基本类型、自定义对象和系统对象。理解和熟练掌握这些技术对于深入Android开发和优化性能至关重要。在实际应用中,应特别注意内存管理和对象生命周期,以确保代码的稳定性和效率。通过实践和...

    JS调用Android方法,向Android方法传递json数据

    总结来说,通过Android的WebView组件和`addJavascriptInterface`,我们可以轻松地在JavaScript和Android之间建立通信桥梁,传递包括JSON在内的各种数据。这种技术在混合式应用开发中十分常见,帮助开发者利用...

    Android中为应用添加多个Activity并实现参数传递案例

    总结起来,Android应用中添加多个Activity可以提高程序结构的清晰度,而参数传递则实现了Activity间的通信。理解并熟练运用这些技术,对于构建功能丰富的Android应用至关重要。通过Intent和Bundle,开发者可以传递...

    Android多进程通讯AIDL传递Parcelable对象

    总结,Android多进程通讯AIDL传递Parcelable对象是一种强大的技术,可以实现复杂的跨进程数据交换。正确理解和使用AIDL能够帮助开发者构建健壮的、具有扩展性的Android应用。在实际开发中,应结合具体需求选择合适的...

    诠释Android中Activity间的参数互传

    在Android应用开发中,Activity是用户界面的基本...总结,Activity之间的参数传递是Android应用开发中的常见操作,开发者可以根据需求选择适合的方法。理解并熟练掌握这些机制,将有助于构建更高效、更灵活的应用程序。

    Android 在上个Android简单程序改进后可以传递数据到另外的组件中

    总结来说,Android组件间的通信是通过Intent实现的,它允许开发者在不同的Activity、Service或BroadcastReceiver之间传递数据。了解和熟练使用Intent是每个Android开发者必须掌握的基本技能。通过阅读源码和实际操作...

    Android view构造方法第3个参数详解 demo

    总结来说,理解View的构造方法和它们的参数对于Android开发至关重要。正确使用构造方法可以帮助我们更好地控制View的行为,同时,通过处理AttributeSet和defStyleAttr,我们可以实现对XML布局文件中属性的定制,提升...

    Android 开发Activity基础 启动和跳转并传递参数

    总结,Android的Activity是应用程序的核心组成部分,理解和熟练运用Activity的启动、跳转以及参数传递是开发高效Android应用的基础。通过对Activity生命周期的管理、启动模式的选择以及Intent Flag的使用,可以实现...

    Android-Service与Activity传值

    总结来说,`Service`和`Activity`之间的数据传递可以通过Intent参数、BroadcastReceiver或Binder实现。BroadcastReceiver适用于不频繁的数据交换,而Binder适合需要频繁交互且在同一个进程的情况。开发者应根据具体...

    android 带参数的上传 客户端加服务器端

    总结,Android客户端实现带参数的文件上传涉及到网络请求库的使用、构建多部分请求体以及发送HTTP请求。服务器端则需要解析请求中的文件和参数,执行相应的处理并返回响应。在实际开发中,务必注意安全性和性能优化...

    android xml中include标签的使用

    总结,`<include />`标签是Android XML布局中的一个重要特性,它简化了布局的管理和复用,提高了代码的可维护性。通过合理地使用`<include />`和`<merge>`,以及结合其他技术如Data Binding,我们可以构建出更加高效...

    Android 使用AIDL跨进程通信--传递自定义对象

    本文将深入探讨如何使用AIDL在Android中实现跨进程通信,特别是如何传递自定义对象。 首先,我们需要理解AIDL的基本概念。AIDL是一种类似Java的接口定义语言,它允许我们声明方法签名,包括参数类型和返回值类型。...

    Android-retrofit简单封装实现公共参数get和post统一处理

    总结,通过以上步骤,我们成功实现了Retrofit的简单封装,包括公共参数的统一处理、上传下载的进度显示,以及同时提交图片和文本数据。这个过程不仅提高了代码的可复用性和可维护性,还使得网络请求更加灵活和高效。

    Jni中C++和Java的参数传递

    总结来说,JNI中的参数传递涉及以下步骤: 1. 在Java中定义与C++结构体匹配的类。 2. 使用`javah`生成C/C++头文件。 3. 在C++中实现本地方法,注意使用正确的JNI类型和函数来处理参数和返回值。 4. 转换C++数据类型...

    JNI中C和Java参数传递详细例子

    ### JNI中C和Java参数传递详解 #### 一、引言 Java Native Interface (JNI) 是Java平台标准的一部分,用于让Java代码与其他语言写的代码进行交互。本文将深入探讨在JNI环境中,C/C++和Java之间如何进行参数传递,...

    Android编程实现启动另外的APP及传递参数的方法

    在Android编程中,有时我们需要从一个应用程序(APP)启动另一个应用程序,并且可能还需要在启动时传递参数。这个过程可以通过Intent对象来实现。以下是对标题和描述中提到的知识点的详细说明: 1. **启动其他APP的...

    android RPC原理总结及源码

    Binder 是Android中实现IPC的核心组件,它允许对象在进程间传递。Parcelables是Android序列化的一种高效方式,常用于跨进程传输数据。IBinder 是所有跨进程通信的基础接口,AIDL生成的Stub类就是它的实现。 总的来...

    Android Activity中使用Intent实现页面跳转与参数传递的方法

    本篇将详细介绍如何在Android Activity中使用Intent实现页面跳转与参数传递。 首先,让我们来看一下在`FirstActivity`中如何创建Intent并传递参数。在`onClick`方法中,我们首先实例化一个新的Intent对象: ```...

Global site tag (gtag.js) - Google Analytics