2016-03-01 63 views
0

当创建一个片段时,建议在片段类中使用静态方法来传递和包装参数(s。this post)。开始一个活动作为一个额外的意图的最佳实践

现在我想到了类似的开始活动的意图。

f.e:

public class ItemDetailActivity extends AppCombatActivity { 

    public static final String ARG_PARAM1 = "param1"; 
    public static final String ARG_PARAM2 = "param2"; 

    public static void startAsIntent(Context context, String param1, int param2) { 
     Bundle extras = new Bundle(); 

     extras.putString(ARG_PARAM1, param1); 
     extras.putInt(ARG_PARAM2, param2); 

     Intent intent = new Intent(context, ItemDetailActivity.class); 
     intent.putExtras(extras); 

     context.startActivity(intent); 
    } 
} 

这是一个好主意?

+2

有什么不妥的地方,我知道的。其他人则建议做同样的事情。它的好处是可以在设置额外功能之前执行更多验证(例如,检查“B​​itmap”的大小,以便知道您不会超过1MB IPC事务限制)。 – CommonsWare

+1

我这样做没有问题。特别是如果Activity *需要*你传入的参数。它明确地显示了需要什么,所以它更不容易混淆。 – DeeV

+1

我已经看到了这一点。我真的很喜欢它,如果有复杂的逻辑来填补额外的,否则需要重复多个地方。 –

回答

1

这是完全正确的,也许误解是由于数据包必须由Activity接收而引起的。而现在,从某些API以前我们有片段,有时需要从Fragment中打开activity(并发送包含数据的包)。

0

您可以使用直接将数据传递给意向,捆绑用于片段尽其用,下面的例子

Intent intent = new Intent(context, ItemDetailActivity.class); 
intent.putString(ARG_PARAM1 ,value); 
intent.putInt(ARG_PARAM2 ,value); 

我希望帮助 入住这

+0

,但是我需要把一个序列化,所以我用了一捆。为了向您展示一个示例,我更改了代码并保留了该包。 –