Java 通过ArrayList传递意图值

Java 通过ArrayList传递意图值,java,android,android-intent,intentservice,Java,Android,Android Intent,Intentservice,我在同一个项目中有一个android类和一个Java类。 我想将arraylist从android传递到java 我可以通过数组,但不能通过arraylist。 有人能告诉我这件事吗 安卓: Intent i1= new Intent(context, WriteExcel.class); i1.putExtra("stock_list", arrTransfer); context.startService(i1); Java文件: public void onStart(Intent in

我在同一个项目中有一个android类和一个Java类。 我想将arraylist从android传递到java

我可以通过数组,但不能通过arraylist。 有人能告诉我这件事吗

安卓:

Intent i1= new Intent(context, WriteExcel.class);
i1.putExtra("stock_list", arrTransfer);
context.startService(i1);
Java文件:

public void onStart(Intent intent, int startId) {
    ArrayList<String> stock_list = (ArrayList<String>) intent.getExtras().get("stock_list"); 
}

这里,在Java文件中,如果我将arrayList设置为array,那么我可以获得值。

您需要在您的意图中添加一个额外的值,如下所示:

intent.putStringArrayListExtra("stock", (ArrayList<String>) stock_list );
ArrayList<String> stock_list = data.getStringArrayListExtra("stock");
然后像这样检索它:

intent.putStringArrayListExtra("stock", (ArrayList<String>) stock_list );
ArrayList<String> stock_list = data.getStringArrayListExtra("stock");

请改用putStringArrayListExtra:

Intent i1= new Intent(context, WriteExcel.class);
i1.putStringArrayListExtra("stock_list", arrTransfer);
context.startService(i1);
当您调用startServicei1时,android会启动活动WriteExcel,前提是您通过调用其onCreate方法并将意图传递给它,从而正确地完成了该操作。这就是你应该处理意图的地方。您的onCreate可能如下所示:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = getIntent();

    ArrayList<String> stock_list = intent.getStringArrayListExtra("stock_list");
}

您应该覆盖onstart命令onstart已弃用。可以在ArrayList实现时传递它serializable@Raghunandan:你能解释或提供代码吗。我没有得到你不赞成的意思是不要使用该方法。它不再被支持或推荐。因此,我应该使用onStartCommand而不是onStart?是的,这就是我在第一条评论中指出的。阅读我不能使用getIntent,因为它是一个Java类更新了我的答案,请尝试一下。另外,所有类都是用Java编写的,我在oncreate中添加了一个toast,我发现在oncreate中没有调用这个toast。应用程序崩溃。再次更新答案,试图澄清一些事情。如果仍然不起作用,请在WriteExcel类中发布代码。在检索时,我使用了、intent for data和ur命令,但它使我的应用程序崩溃