Android的Activity接收putExtra传递的参数

一般情况方式如下打开Activity

    Intent i = new Intent(this, ImgInfo.class); 
    i.putExtra("id", mPhotoId);  
    startActivity(i);

在Activity ImgInfo类的onCreate方法中写下如下的代码:

    Bundle bud = getIntent().getExtras();
    if (bud != null && bud.containsKey("id")) {
        mPhotoId = bud.getInt("id");
    }

如果有设置singleInstance模式

 <activity android:name="ImgInfo" android:label="@string/app_name"
   android:screenOrientation="portrait" android:launchMode="singleInstance">
 </activity>

就会发现除了第一次能正确接收之外,其他的会无效。

只是需要做的是重写onNewIntent方法,基本代码如下:

    @Override
    protected void onNewIntent(Intent intent) {  
        super.onNewIntent(intent);
        setIntent(intent);
        InitArg();
    }
    private InitArg(){
        Bundle bud = getIntent().getExtras();
        if (bud != null && bud.containsKey("id")) {
        mPhotoId = bud.getInt("id");
    }
原文地址:https://www.cnblogs.com/cfox/p/3014896.html