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傳值的更新。
如有轉載,請標明出處,謝謝。