Android传递参数总结

来源:互联网 发布:手机淘宝排名怎么提升 编辑:程序博客网 时间:2024/05/16 12:43

Android中经常用到activity之间相关参数的传递。

有的是利用intent来进行,有的是利用全局变量来进行。大家根据情况选定。

1:利用putExtra和intent来进行相关activity的传值:

String num1 = etNum1.getText().toString();String num2 = etNum2.getText().toString();Intent intent = new Intent();//intent.putExtra(String name, String value);来传递参数。intent.putExtra("one",num1);        intent.putExtra("two",num2);        intent.setClass(ButtonAndView.this,ResultActivity.class);        startActivity(intent);

在需要put的地方,家那个num1,num2进行putExtra,然后在需要get的地方get就ok。如下:

Intent intent1 = getIntent();// intent1.getStringExtra()来得到上一个ACTIVITY发过来的字符串。String one = intent1.getStringExtra("one");String two = intent1.getStringExtra("two");int oneInt = Integer.parseInt(one);   //Integer.parseInt()转为整型;int twoInt = Integer.parseInt(two);
这样,就实现了putExtra和intent的传递参数。

2:bundle传递参数:

Intent intent = new Intent();intent.setClass(this,Test.class);// 直接添加  //intent.putExtra("MyData", new ParcelableData());  // 通过Bundle          Bundle bundle=new Bundle();        bundle.putString("MyString","test bundle");        bundle.putParcelable("MyData",new ParcelableData());        intent.putExtras(bundle);        startActivity(intent);  
然后在需要的地方get。

Bundle bundle = getIntent().getExtras();ParcelableData parcelableData = bundle.getParcelable("MyData");String testBundleString = bundle.getString("MyString");Log.v("string=", testBundleString);        Log.v("name=", parcelableData.getName());        Log.v("age=", ""+parcelableData.getAge());  
3:广播和intent传递数据:

public class BroadcastActivity extends Activity {     public static final String MY_NEW_LIFEFORM = "NEW_LIFEFORM";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_broadcast);        //传递数据          final Intent intent = new Intent(MY_NEW_LIFEFORM);        intent.putExtra("msgContent", "测试内容");        //初始化按钮          Button button = (Button) findViewById(R.id.sendBroadcastIntent);        button.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View arg0) {                sendBroadcast(intent);            }        });    }} 
然后就是broadcastReceiver:

public class Receiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        String content = intent.getStringExtra("msgContent");        CharSequence string = "收到信息:" + content;        Toast.makeText(context, string, Toast.LENGTH_LONG).show();    }}  

然后注意使用广播要对Manifest进行配置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.dh.broadcast"android:versionCode="1"android:versionName="1.0" ><uses-sdk   android:minSdkVersion="8"  android:targetSdkVersion="17" /><application    android:allowBackup="true"    android:icon="@drawable/ic_launcher"    android:label="@string/app_name"    android:theme="@style/AppTheme" >    <activity        android:name="com.dh.broadcast.BroadcastActivity"        android:label="@string/app_name" >        <intent-filter>            <action android:name="android.intent.action.MAIN" />            <category android:name="android.intent.category.LAUNCHER" />        </intent-filter>    </activity>    <receiver android:name="com.dh.broadcast.Receiver" android:enabled="true">        <intent-filter >            <action android:name="NEW_LIFEFORM"/>        </intent-filter>    </receiver></application></manifest>  

4:全局变量进行传递:

public class CaChe {    private CaChe() {    }    private static ConcurrentHashMap<String, Object> MAP = new ConcurrentHashMap<String, Object>();    public static void put(String key, Object value) {        MAP.put(key, value);    }    public static <T> T get(String key) {        return (T) MAP.get(key);    }    public static void remove(String key) {        MAP.remove(key);    }    public static void clear() {        MAP.clear();    }}
封装一个全局变量的put,get的类。

使用的时候,我们在需要put的地方,直接如下:

CaChe.put("code", "2");

在接收的地方:

CaChe.get("code").equals("2")
全局变量使用需谨慎,不需要的时候remove掉。

就先总结这么多吧,能想到的就这么多传值的方法了,如果继续想到,会继续进行android传值的更新。

如有转载,请标明出处,谢谢。

1 0
原创粉丝点击