Android傳遞參數總結

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傳值的更新。

如有轉載,請標明出處,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章